Электронные письма 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. Надеюсь, что это поможет.