Электронные письма cakephp не работают

моя проблема:

в контроллере у меня:

var $components = array ('Email');

метод отправки писем выглядит следующим образом:

function send_emails() {
  $this->Email->from    = 'Somebody <[email protected]>';
  $this->Email->to      = 'Somebody Else <[email protected]>';
  $this->Email->subject = 'Test';
  $this->Email->send('Hello message body!');
 }

Я использую Cake 1.3 и запускаю его на localhost с Apache 2.2.11 и PHP5. Вы, ребята, не знаете, почему это не работает?

Когда я помещаю

$this->Email->delivery = 'debug';

в коде, он отображает электронную почту, и кажется, что все в порядке.

Есть ли у вас какие-либо идеи, по какой причине он не может отправлять электронную почту?

Ответы

Ответ 1

Вы отправляете с сервера Windows? Если да, правильно настроили ли вы MTA в php ini? Вы можете отправлять почту с помощью функции mail()?

Если вы находитесь на окнах и нуждаетесь в MTA, hMail отлично подходит для разработки, обратите внимание, что многие хосты отклонят почту с вашего локального машина спама, поэтому не используйте при производстве без записи MX, ключей домена и т.д.

Ответ 2

Если вы работаете на удаленном сервере, то есть на сервере хостинга, тогда он должен работать, поскольку он будет получать электронную почту по умолчанию.

Как и вы, вы должны предоставить почтовому компоненту некоторые возможности электронной почты. Вы можете сделать это, например, загружая ваши данные gmail (или что-то еще) smtp, то есть сервер, логин, пароль.

   /* SMTP Options for GMAIL */
   $this->Email->smtpOptions = array(
        'port'=>'465', 
        'timeout'=>'30',
        'auth' => true,
        'host' => 'ssl://smtp.gmail.com',
        'username'=>'[email protected]',
        'password'=>'your_gmail_password',
   );

    /* Set delivery method */
    $this->Email->delivery = 'smtp';

См. http://book.cakephp.org/view/1290/Sending-A-Message-Using-SMTP

Если вы не знаете, какие учетные данные использовать, посмотрите его в справочной системе или в справочнике по электронной почте. Обычно его можно найти, выполнив поиск настроек Outlook или Thunderbird.

Ответ 3

Вам нужен SMTP-сервер для отправки электронной почты. Если вы пытаетесь отправить его с вашего локального хоста, две хорошие альтернативы:

  • FreeSMTP: инструмент на базе Windows, который позволяет вашему компьютеру действовать как SMTP-сервер
  • Gmail: вы можете использовать свой адрес Gmail для целей тестирования.

Вам необходимо следовать инструкциям отправлять электронную почту с помощью CakePHP через SMTP. Вы также можете изменить свои настройки php.ini, чтобы отобразить новые настройки.

Ответ 4

У меня была та же проблема, я забыл включить ssl на моем сервере xampp, для этого нужно просто добавить (или раскомментировать) строку extension=php_openssl.dll в файле php.ini. Надеюсь, что это поможет.