Yii2 mailer

Yii2 mailer

От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы с вами познакомимся с таким вопросом, как отправка почты в Yii2. Для этого мы можем использовать специальное расширение swiftmailer, настройку которого и рассмотрим в данной статье.

Итак, для отправки почтовых сообщений с сайта Yii2 использует популярное расширение swiftmailer. Его настройка производится в файле конфигурации config/web.php, где мы можем найти дефолтную конфигурацию данного компонента:

Yii2 mailer

Как видим, в качестве компонента отправки почты – mailer – используется соответствующий класс и дополнительно используется только одна опция – useFileTransport со значением true. Данная опция позволяет тестировать отправку почты, т.е. письмо будет формироваться, но отправляться не будет, а будет сохраняться в файл.

Давайте попробуем сформировать и отправить тестовое письмо. Для этого достаточно использовать следующий базовый код:

Давайте поместим его в экшен главной страницы и обновим ее:

Yii2 mailer

Теперь заглянем в папку runtime/mail – именно туда и сохраняет фреймворк тестовые письма. Если такая папка появилась (изначально ее нет) и в ней есть файл с расширением .eml – значит компонент работает в тестовом режиме и можно настроить его и переходить в режим «боевой».

Yii2 mailer

Для этого нам необходимо отключить тестовый режим (‘useFileTransport’ => false) и указать настройки используемого SMTP (хост, логин, пароль, порт, протокол) в файле конфигурации:

В примере я использовал SMTP сервиса ukr.net. Значениями username и password необходимо использовать почту и пароль от нее на данном сервисе. Также можно использовать и любой другой SMTP.

Осталось внести изменения в код отправки письма. В метод setFrom мы должны передать email, который и используется для отправки письма. Также можно передать параметр в виде массива, где ключом будет искомый email, а значением – текст, который будет подставлен в поле От. Ну и, конечно же, укажем реальный email получателя в методе setTo:

Попробуем обновить страницу и проверим email получателя. Если все сработало, тогда там мы увидим полученное письмо:

Yii2 mailer

Отлично, работает! А что если нам нужно отправить большое письмо? Конечно, мы можем сформировать его в методе setHtmlBody или сформировать в некоторой переменной, которую и передать параметром в setHtmlBody. Но есть куда более правильный способ. В метод compose мы можем передать параметры. Первый параметр — это вид, в котором мы и разместим необходимый HTML код письма. Вид поместим в папку mail в корне проекта. Вторым параметром мы можем передать массив переменных, которые можно использовать в искомом виде.

В качестве примера давайте сформируем простенькую табличку. Вид назовем test.php и используем в нем массив данных $names.

И укажем необходимые данные в методе compose, при этом методы setTextBody и setHtmlBody нам больше не нужны, поскольку текст письма будет взят из вида, поэтому удалите или закомментируйте вызов указанных методов:

Попробуем обновить страницу сайта и проверим email получателя, там должно быть письмо с примерно таким содержимым:

Yii2 mailer

Все просто, не так ли? На этом сегодня все. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.

Метки:

Похожие статьи:

Комментарии Вконтакте: