Yii2 отправка почты

Yii2 отправка почты

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

Практически на любом сайте так или иначе возникает необходимость в отправке почты. Это может быть банальная форма обратной связи, через которую пользователь имеет возможность написать администратору сайта. Это может быть заказ товаров в интернет-магазине, когда менеджеру магазина необходимо доставить письмо с уведомлением о новом заказе. Варианты могут быть разные, но суть одна – практически на любом сайте необходим такой функционал.

Как же реализовать эту задачу в Yii? Сделать это достаточно просто. Фреймворк предлагает расширение swiftmailer, которое нам нужно просто настроить. Настраивается оно в файле config\web.php. Вот настройки класса swiftmailer по умолчанию:

Yii2 отправка почты

Обратите внимание на настройку useFileTransport со значением true. Данное значение устанавливает заглушку, и письмо не отправляется реально, его отправка просто эмулируется. Файл письма при этом будет сохранен в папку runtime\mail.

Давайте протестируем отправку. Для этого нам даже ничего не потребуется писать, поскольку в Yii уже есть контактная форма по адресу //yii.loc/site/contact:

Yii2 отправка почты

За работу данной формы отвечает действие actionContact контроллера SiteController. Сама форма настраивается в модели ContactForm. В модели определяются свойства, отвечающие за поля формы, метод rules, задающий правила валидации, метод attributeLabels, которым можно задать названия полей в label и, наконец, метод contact, который и отправляет письмо.

Yii2 отправка почты

Именно метод contact модели и вызывается в действии контроллера. В качестве параметра он передает email администратора, который указан в параметрах (файл config\params.php). Давайте попробуем отправить письмо. После формирования письма на странице мы увидим соответствующее сообщение, а в папке runtime\mail появится файл письма.

Yii2 отправка почты

Как я уже отмечал, отправка письма при этом реально не произошла. Как же научить Yii отправлять сообщение на реальный email? Для этого нам необходимо вернуться в файл config\web.php и настроить отправку почты. Для начала значение useFileTransport необходимо выставить в false, а затем добавить массив настроек transport с настройками SMTP выбранного почтовика. Для примера я использую SMTP yandex.ru:

Также внесем небольшое изменение в метод contact модели. В параметре setFrom укажем email (также его можно добавить и в параметры, чтобы использовать в дальнейшем повторно, как email администратора), через который будет отправлен email, поскольку отправитель должен быть реальным. В противном случае письмо не будет отправлено.

Теперь проверим, работает ли новый функционал. После отправки формы теперь письмо не попадает во временную папку, а реально доставляется на указанный email. Как видим, это не очень сложно.

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

Метки:

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

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

Комментарии (2)