Как использовать swiftMailer в Yii2
Я не могу, наконец, понять, как использовать расширение swiftMailer в Yii2. Судя по тому, что на эту тему я не нашел вопросов, задание тривиальное, но до конца понять не смог.
есть примеры, которые не описать более подробно весь цикл отправки письма или я чего-то не понимаю :(
настройка
return [
//....
'components' => [
......
'mail' => [
'class' => 'yiiswiftmailerMailer',
'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();
Я хочу получит конкретный рабочий пример. Спасибо.
P.S. Я скорректировал записи домена MX, DKIM, SPF добавил.
UPD (некоторый ответ):
E-mail, который передается в поле "От", по умолчанию проставляется в поле "обратный путь" должен быть существующий адрес. Некоторые провайдеры не разрешить отправку почты с несуществующих адресов электронной почты.
5 ответов
убедитесь,что вы инициализировали приложение в рабочей среде для отправки электронной почты из приложения, иначе оно будет записано в папку mailoutput.Или вручную отредактируйте файл конфигурации следующим образом.
в разделе компонентов вашего common/main-local.в PHP
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@backend/mail',
'useFileTransport' => false,//set this property to false to send mails to real email addresses
//comment the following array to send mail using php's mail function
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.gmail.com',
'username' => 'username@gmail.com',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
в контроллере
\Yii::$app->mail->compose('your_view', ['params' => $params])
->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail'])
->setTo('to_email@xx.com')
->setSubject('This is a test mail ' )
->send();
Это должно работать! Надеюсь, это поможет вам!
вам не нужно использовать SMTP-транспорт с swiftmailer, только удалить 'useFileTransport' => true
в файле конфигурации (app/config/web.php
в базовом шаблоне) и письма потекут.
посмотрите в документах:
http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html
внимание: эта опция больше не доступна, так как Mandrill был куплен Mailchimp
иногда могут быть проблемы с использованием SwiftMailer не зависит от вас. Как когда я использовал mail.ru почтовый сервер. Я нашел решение в сообществе laravel и implemend в Yii2.
вы можете использовать альтернативную службу, как https://mandrillapp.com/ (электронная почта 12к в месяц, 250 в течение часа свободна) и установка как ниже:
сообщество laravel / настройка почты с mandrill
'host' => 'smtp.mandrillapp.com',
'username' => 'user@domain.name',
'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill
'port' => '587',
'encryption' => 'tls',
Если вы используете электронную почту Gmail, вы также можете столкнуться с проблемой безопасности. Вы можете отключить безопасность, разрешив приложению использовать свою учетную запись gmail.
Если вы вошли в систему с помощью Google ссылки ниже:
https://www.google.com/settings/security/lesssecureapps
надеюсь, что это поможет кому-то
на самом деле, вы должны использовать config key mailer вместо почта.
'components' => [
...
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'localhost',
'username' => 'username',
'password' => 'password',
'port' => '587',
'encryption' => 'tls',
],
],
...
],