2012-06-18 4 views
0

Мой контроллерCakePHP электронной почты Ошибка

App::uses('CakeEmail', 'Network/Email'); //before class begins 

//function 
public function contact(){ 

     $email = new CakeEmail(); 
     $email->config('smtp'); 
     $email->from('[email protected]'); 
     $email->to('[email protected]'); 
     $email->subject('About'); 
     $email->send('My message'); 
    } 

//Email.php in config folder 

class EmailConfig { 

    public $smtp = array(
     'transport' => 'Smtp', 
     'from' => '[email protected]', 
     'host' => 'smtp.gmail.com', 
     'port' => 465, 
     //'timeout' => 30, 
     'username' => '[email protected]', 
     'password' => '*****', 
     'client' => null, 
     'log' => false, 
     //'charset' => 'utf-8', 
     //'headerCharset' => 'utf-8', 
    ); 
} 

Ошибка я получаю

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\myproject\lib\Cake\Network\CakeSocket.php on line 222

, что мне нужно изменить?

Я даже создал файл вида в Views/Users/contact.

Нужно ли мне изменить файл вида в папке «Просмотр/Электронная почта»?

ответ

1

Вам необходимо увеличить переменную max_execution_time в файле php.ini.

Вы не должны откладывать отправку электронной почты через gmail. Правильно ли вы настроили параметры smtp?

из торта книги http://book.cakephp.org/2.0/en/core-utility-libraries/email.html

«Вы можете настроить SSL SMTP-сервера, как GMail. Для этого поставьте «ssl: //» в префикс в хосте и соответствующим образом настройте значение порта. Пример: '

<?php 
class EmailConfig { 
    public $gmail = array(
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'username' => '[email protected]', 
     'password' => 'secret', 
     'transport' => 'Smtp' 
    ); 
} 
?> 
+0

Увеличилось время, но по-прежнему не удается отправить электронное письмо. Это дает мне ту же ошибку. Что я упускаю здесь? – user1463937

+0

Да, я выполнил основные шаги из книги поваров. Если я следую им, он говорит, что не мог отправить письмо, произошла внутренняя ошибка. Если я использую 'ssl: //smtp.gmail.com', он говорит, что ssl не настроен. – user1463937

+0

Ну что такое внутренняя ошибка из журналов ошибок? – Leo

0

Удалить из вашего действия $email->from('[email protected]'); и повторите попытку. Укажите От адрес только в конфигурации электронной почты. Затем посмотрите, работает ли он.

App::uses('CakeEmail', 'Network/Email'); //before class begins 

//function 
public function contact(){ 

     $email = new CakeEmail(); 
     $email->config('smtp'); 
     $email->to('[email protected]'); 
     $email->subject('About'); 
     $email->send('My message'); 
    } 

//Email.php in config folder 

class EmailConfig { 

    public $smtp = array(
     'transport' => 'Smtp', 
     'from' => '[email protected]', 
     'host' => 'ssl://smtp.gmail.com', 
     'port' => 465, 
     'timeout' => 60, 
     'username' => '[email protected]', 
     'password' => '*****', 
     'client' => null, 
     'log' => false, 
     //'charset' => 'utf-8', 
     //'headerCharset' => 'utf-8', 
    ); 
} 
Смежные вопросы