Почта CakePHP не работает на сервере

Недавно я загрузил приложение CakePHP 2.3.8 в экземпляр Ubuntu 12.04 EC2, и теперь я не могу отправлять электронные письма при использовании $Email->send(), но я могу сделать это с помощью "быстрого" метода CakeEmail::deliver('[email protected]', 'Subject', 'Content');, однако у меня есть макет которые я хочу использовать.

Когда я пытаюсь отправить электронное письмо, я получаю сообщение об ошибке "Не удалось отправить электронное письмо. Ошибка: произошла внутренняя ошибка. "

Вот мой код для отправки электронной почты.

App::uses('CakeEmail', 'Network/Email');
$Email = new CakeEmail();
$Email->from(array('[email protected]' => 'Me'));
$Email->to('[email protected]');
$Email->subject('Test Email');
$Email->template('layout_1');
$Email->emailFormat('html');
$testvalues = array('item1' => 'test1', 'item2' => 'test2');            
$Email->viewVars(array('tesvalues'=> $testvalues));
$Email->send();
$this->Session->setFlash('Email has been sent');
$this->redirect($this->referer(), null, true); 

В/App/Config/email.php вот что у меня для smtp

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

Точная строка, в которой флаги трассировки стека находятся в CORE/Cake/Network/Email/MailTransport.php

$this->_mail($to, $email->subject(), $message, $headers, $params);

Я проверил журнал ошибок, и он говорит

Error: [SocketException] Could not send email.

Ответы

Ответ 1

Я собираюсь снимать в темноте здесь.

Мне кажется, что вы неправильно устанавливаете макет, в соответствии с документацией вам нужно сообщить торт макету и представлению хотите использовать, например:

$Email = new CakeEmail();
$Email->template('welcome', 'fancy')
    ->emailFormat('html')
    ->to('[email protected]')
    ->from('[email protected]')
    ->send();

Вышеупомянутое будет использовать app/View/Emails/html/welcome.ctp для представления, а также приложение /View/Layouts/Emails/html/fancy.ctp для макета.

В любом случае, я рекомендую взглянуть на журналы Cake (app/tmp/logs) и увидеть причину вашей ошибки