frops
@frops
Люблю читать книги

Как отправлять письма через swiftMailer в Yii2?

Всем привет. Не могу окончательно разобраться, как же все таки использовать расширение swiftMailer в Yii2. Судя по тому, что вопросов по этой теме я не нашел, задача тривиальна, но до конца разобраться я не смог.

Есть примеры, которые не описывают более подробно весь цикл отправки письма или же я что-то не понимаю :(

Установка
return [
    //....
   'components' => [
    ......
    'mail' => [
      'class' => 'yii\swiftmailer\Mailer',
      'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => 'localhost',
        'username' => 'username',
        'password' => 'password',
        'port' => '587',
        'encryption' => 'tls',
      ],
    ],
  ]
];


Отправка
Yii::$app->mail->compose()
    ->setTo($toEmail)
    ->setFrom([$this->email => $this->name])
    ->setSubject($this->subject)
    ->setTextBody($this->body)
    ->send();


Из всего этого непонятно, как мне, например, подключиться к почте на biz.mail.ru. На хостинге почтового сервера нет.

'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',

Тут
host: smtp.mail.ru, username: account@domain.ru, password: password of account@domain.ru

Подскажите, что я делаю не так.

P.S. Доменные записи MX настроил, DKIM, SPF добавил.
UPD1: Не могу отправить письмо указанным способом. Страница долго грузится, а потом отваливается по тайм-ауту: screenshot.ru/upload/images/2014/07/28/mama_bus_de...
  • Вопрос задан
  • 31563 просмотра
Пригласить эксперта
Ответы на вопрос 3
@matperez
Ответ конечно устарел, но многим может быть полезным. Вот так можно получить лог всего процесса отправки сообщения, а там уж ясно становится в чем проблема.

$mailer = Yii::$app->get('mailer');
$message = $mailer->compose() ... ;
$logger = new Swift_Plugins_Loggers_ArrayLogger();
$mailer->getSwiftMailer()->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));
if (!$message->send()) {
       echo $logger->dump();
}
Ответ написан
Касательно smtp.mail.ru. 465 порт - SSL, 587 - TLS.
Плюс адрес ->setFrom([$this->email => $this->name]) должен совпадать с 'username' => 'account@domain.ru'.
Ответ написан
Комментировать
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
'host' => 'smtp.mail.ru',
'username' => 'account@domain.ru',
'password' => 'password of account@domain.ru',
'port' => '587',

очевидно же
www.yiiframework.com/wiki/656/how-to-send-emails-u...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы