@greyson
Для отправки письма по SMTP в Zend Framework 2 необходимо выполнить следующие шаги:
1
|
composer require zendframework/zend-mail |
1 2 3 4 5 |
$message = new ZendMailMessage();
$message->setSubject('Заголовок письма');
$message->setBody('Текст письма');
$message->setFrom('от кого@example.com');
$message->addTo('кому@example.com');
|
1 2 3 4 5 6 7 8 9 |
$transport = new ZendMailTransportSmtp();
$transport->setHost('smtp.gmail.com');
$transport->setPort(587);
$transport->setEncryption('tls');
$transport->setOptions(array(
'connection_class' => 'login',
'username' => 'ваш email адрес',
'password' => 'ваш пароль',
));
|
1
|
$transport->send($message); |
Полный код для отправки письма по SMTP в Zend Framework 2 может выглядеть так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
use ZendMailMessage;
use ZendMailTransportSmtp;
$message = new Message();
$message->setSubject('Заголовок письма');
$message->setBody('Текст письма');
$message->setFrom('от кого@example.com');
$message->addTo('кому@example.com');
$transport = new Smtp();
$transport->setHost('smtp.gmail.com');
$transport->setPort(587);
$transport->setEncryption('tls');
$transport->setOptions(array(
'connection_class' => 'login',
'username' => 'ваш email адрес',
'password' => 'ваш пароль',
));
$transport->send($message);
|
@greyson
В описанном коде есть небольшая ошибка, так как объявления классов ZendMailMessage и ZendMailTransportSmtp должны быть начинаться с . Дополнительно необходимо создать экземпляр ZendMailTransportSmtpOptions, который должен быть передан в конструктор ZendMailTransportSmtp.
Поправленный код для отправки письма по SMTP в Zend Framework 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
use ZendMailMessage;
use ZendMailTransportSmtp;
use ZendMailTransportSmtpOptions;
$message = new Message();
$message->setSubject('Заголовок письма');
$message->setBody('Текст письма');
$message->setFrom('от кого@example.com');
$message->addTo('кому@example.com');
$options = new SmtpOptions(array(
'host' => 'smtp.gmail.com',
'port' => 587,
'connection_class' => 'login',
'connection_config' => array(
'username' => 'ваш email адрес',
'password' => 'ваш пароль',
'ssl' => 'tls'
)
));
$transport = new Smtp($options);
$transport->send($message);
|
В этом примере, мы создаем новый экземпляр SmtpOptions с настройками SMTP сервера, включая хост, порт, имя пользователя и пароль. Затем передаем эти опции при создании экземпляра Smtp для настройки транспорта. После этого мы вызываем метод send() для отправки письма.