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

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

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

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

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

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    // send all mails to a file by default. You have to set
    // 'useFileTransport' to false and configure a transport
    // for the mailer to send real emails.
    'useFileTransport' => true,
],

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

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

Давайте протестируем отправку. Для этого нам даже ничего не потребуется писать, поскольку в Yii уже есть контактная форма по адресу http://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:

'mailer' => [
    'class' => 'yii\swiftmailer\Mailer',
    // send all mails to a file by default. You have to set
    // 'useFileTransport' to false and configure a transport
    // for the mailer to send real emails.
    'useFileTransport' => false,
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => 'smtp.yandex.ru',
        'username' => 'oc.mcdir@yandex.ru',
        'password' => 'oc_2017',
        'port' => '465',
        'encryption' => 'ssl',
    ],
],

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

public function contact($email)
{
    if ($this->validate()) {
        Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom(['oc.mcdir@yandex.ru' => $this->name])
            ->setSubject($this->subject)
            ->setTextBody($this->body)
            ->send();

        return true;
    }
    return false;
}

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

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

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Фреймворк YII2. Быстрая разработка с современным фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Научиться

Метки:

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree