• урок
  • pantey

Drupal 8 – использование SMTP протокола для отправки почты

12.07.2017

SMTP – это протокол, предназначенный для передачи почты в сетях TCP\IP. Многие пренебрегают данным протоколом, после чего могут возникать ситуации, когда email сообщение, отправленное в с вашего сервера, так и не дойдет до конечного получателя. Это очень актуально с почтовыми серверами mail.ru, которые вместо того, что бы отправить данное письмо в спам, просто его игнорируют и оно теряется где-то в спам фильтрах сервиса.

Для решения данного вопроса, уже очень давно существует модуль SMTP, который позволяет в обход PHP mail() отправлять электронную почту через SMTP-сервер вашего хостинга или любого стороннего, будь то Gmail, Яндекс.Почта и т.д.

Установка модуля обычная и трудностей не должно возникнуть. После активации идем по пути «Конфигурация – Система – SMTP Authentication Support», где перед нами откроется страница с настройками.

smtp_settings_drupal_8.png

Для настройки, вы должны знать параметры вашего SMTP сервера, это можно узнать у вашего хостинг провайдера, если он вообще поддерживает SMTP (хотя, которые не поддерживают - не встречал).

Список минимум для использования SMTP:

  • Сервер отправки почты
  • Порт
  • Созданный почтовый ящик
  • Пароль от почтового ящика

Так же возможно использовать протоколы шифрования SSL или TLS. Для использования шифрования SSL вам необходим подключенный сертификат SSL.

Хочу заметить, что практически всегда, сервер для отправки Email с шифрованием отличается от сервера по умолчанию, без шифрования, поэтому всегда уточняйте данный момент у вашего хостинг провайдера.

Я использую хостинг от reg.ru – поэтому всю необходимую информацию можно узнать здесь.

Для Яндекс.Почты без шифрования – параметры будут следующие:

  • Сервер отправки почты – smtp.yandex.ru
  • Порт – 25, 587

Для Яндекс.Почты с шифрованием – параметры будут следующие:

  • Сервер отправки почты – smtp.yandex.ru
  • Порт – 465

Хочу заметить, если почта не отправляется, необходимо в настройках вашей учетной записи Яндекс.Почта включить протоколы IMAP или POP.

Для Gmail без шифрования - параметры будут следующие:

  • Сервер отправки почты – smtp.gmail.com
  • Порт – 25, 587

Для Gmail с шифрованием - параметры будут следующие:

  • Сервер отправки почты – smtp.gmail.com
  • Порт – 465

Хочу заметить, что при первой отправке почты, вас заблокирует Gmail, поэтому вам нужно будет пройти в вашу учётную запись и дать разрешение на использование SMTP вашим приложением. О блокировке вам на почту придет соответствующее сообщение.

Хочу заметить, что в Gmail существует еще и ограниченный режим, где письма можно отправлять только пользователям Gmail и G Suite. Более подробно о параметрах здесь.

Теперь возвращаемся к настройке. Первое что нам нужно сделать – это активировать SMTP

smtp_settings_drupal_8_1.png

Хочу заметить, прежде чем удалять данный модуль – обязательно его отключите здесь, иначе вся ваша почта «упадет».

Далее - Настройки сервера SMTP

Указываете адрес SMTP сервера, порт и способ шифрования

smtp_settings_drupal_8_2.png

Если ваш SMTP требует авторизации, то вводим логин и пароль пользователя данного сервера. В моем случае, авторизация не требуется (да и в большинстве случаев тоже), поэтому «Авторизация SMTP» - оставляем как есть.

В разделе «Настройки E-Mail» - указываем адрес и имя отправителя

smtp_settings_drupal_8_3.png

И ставим чекбокс «Разрешить отправку почты в HTML формате».

Так же вы можете указать свое имя хоста в заголовках Message-ID и Received headers, в разделе «SMTP client settings» - по умолчанию используется доменное имя сайта. Я оставляю как есть.

  • Message-ID – уникальный ID сообщения, используется почтовыми клиентами для индентификации сообщения.
  • Received headers – помогает определить через какие сервера прошло письмо. Необходимо читать снизу вверх, самая нижняя запись будет говорить, откуда было отправлено email сообщение (ваш сервер/компьютер), самая верхняя будет указывать на «машину», которая получило данное email. Каждая почтовая система имеет свой собственный стиль строки Received. В большинстве почтовых систем, данная запись имеет весомое значение для определения является ли письмом спамом или нет.

Так же есть возможность все это дело отдебажить, поставив чекбокс, напротив «Включить отладку» и протестировать отправку email через SMTP, указав email адрес в разделе «Отправить тестовое письмо».

Я проверю работу на сервисе mail.ru, ибо он самый капризный

smtp_settings_drupal_8_4.png

Как видите, все у нас отлично доставляется и даже в спам не уходит. На этом все.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.