Переделывал както один сайтик за горе-создателями и потребовалось мне отправлять почту через SMTP c аутентификацией.
Смотрим в руководство на сайте зенда http://framework.zend.com/manual/ru/zend.mail.smtp-authentication.html
и видим: "… на данный момент SMTP-аутентификация не поддерживается" :(
Что же делать?
Отлично осознавая что документация на сайте устаревает раньше, да и свежая версия фреймворка вышла совсем недавно, смотрим в код.
И что же мы видим? Zend/Mail/Protocol/Smtp/Auth!!! УРА!
итак, результат:
config.ini (я храню конфиги в ini файле)
в соответствии с рекомендацией мануала
«Чтобы отправить сообщение электронной почты через SMTP, нужно создать и зарегистрировать объект Zend_Mail_Transport_Smtp, прежде чем будет вызван метод send(). Для всех последующих вызовов Zend_Mail::send() в текущем скрипте будет использоваться SMTP»
index.php или bootstrap.php
здесь следует обратить внимание на второй параметр Zend_Mail_Transport_Smtp в соответствии с кодом это массив
Zend_Mail_Transport_Smtp не может работать с обьектом конфигурации,
именно поэтому прихотится преобразовывать его toArray()
и там где нужно отправка просто шлем почту
Смотрим в руководство на сайте зенда http://framework.zend.com/manual/ru/zend.mail.smtp-authentication.html
и видим: "… на данный момент SMTP-аутентификация не поддерживается" :(
Что же делать?
Отлично осознавая что документация на сайте устаревает раньше, да и свежая версия фреймворка вышла совсем недавно, смотрим в код.
И что же мы видим? Zend/Mail/Protocol/Smtp/Auth!!! УРА!
итак, результат:
config.ini (я храню конфиги в ini файле)
[mail]
host = mailhost.ru
port = 25
auth = login
username = smtpusername
password = smtppassword
в соответствии с рекомендацией мануала
«Чтобы отправить сообщение электронной почты через SMTP, нужно создать и зарегистрировать объект Zend_Mail_Transport_Smtp, прежде чем будет вызван метод send(). Для всех последующих вызовов Zend_Mail::send() в текущем скрипте будет использоваться SMTP»
index.php или bootstrap.php
$oConfig = new Zend_Config_Ini('config.ini');
/**
* Настройка почты. работаем через SMTP с авторизацией
*/
$tr = new Zend_Mail_Transport_Smtp( $oConfig->mail->host, $oConfig->mail->toArray() );
Zend_Mail::setDefaultTransport($tr);
здесь следует обратить внимание на второй параметр Zend_Mail_Transport_Smtp в соответствии с кодом это массив
/**
* Config options for authentication
*
* @var array
*/
protected $_config;
Zend_Mail_Transport_Smtp не может работать с обьектом конфигурации,
именно поэтому прихотится преобразовывать его toArray()
и там где нужно отправка просто шлем почту
$mail = new Zend_Mail( 'windows-1251' );
$mail->setBodyText('This is the text of the mail.');
$mail->setFrom('somebody@example.com', 'Some Sender');
$mail->addTo('somebody_else@example.com', 'Some Recipient');
$mail->setSubject('TestSubject');
$mail->send();