Что такое SMTP-гейт

SMTP-гейт – это способ передачи нам заданий на отправку писем через SMTP-протокол. Разница между API и SMTP в использовании протокола передачи данных: SMTP или HTTP протокол. По SMTP-протоколу для отправки на сервер используется последовательность команд.

enKod поддерживает:

  • отправку писем протоколами: SMTP, TLS 1.2+ (порт 587) и SSL (порт 465).
  • отправку HTML-писем с вложениями (до 25 МБ)
  • шифрование соединения SSL/TLS
  • ведение журналов аудита операций: отправка, ошибки

Авторизация и отправка сообщения

enKod аутентификация осуществляется с помощью SMTP-ключей. Получите от вашего персонального менеджера SMTP-ключ для использования SMTP-гейта.

Подключение к SMTP-серверу осуществляется по адресу: smtpgateway.enkod.io:587

Используйте следующую последовательность команд:

  • STARTTLS - после ввода этой команды все дальнейшее общение между клиентом и сервером проходит по зашифрованному TLS протоколу.
  • EHLO - приветственное сообщение, в ответ получаем список настроек сервера
  • AUTH PLAIN - закодированный в base64 логин и пароль (для аутентификации требуется ввести только SMTP API-ключ в качестве пароля, логин оставить пустым)
  • MAIL FROM - емейл, с которого будет отправлено сообщение
  • REPLY-TO - емейл, на который будет отправлен ответ. Если заголовок не заполнен, то по умолчанию подставляется емейл отправителя
  • RCPT TO - емейл, на который отправляется сообщение
  • DATA - после ввода этой команды можно вводить само тело сообщение с заголовками.

Пример запроса на отправку через openssl

s_client -starttls smtp -connect smtpgateway.enkod.io:587
ehlo testmail.ru
auth plain AABfN3lhTUZtcm5hZ251VFRXR1lueVNiQWNLX2R4VTh4WWVYdzV2UzBYXVpMQ==
mail from:test@testmail.ru
rcpt to:test2@testmail.ru
data
Date: Thu, 29 Sep 2022 15:42:13 GMT
From: test@testmail.ru
To: test2@testmail.ru
Subject: subject
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" style="font-family:'open sans', 'helvetica neue', helvetica, arial, sans-serif">
<head>
<meta charset="UTF-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<meta name="x-apple-disable-message-reformatting"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta content="telephone=no" name="format-detection"/>
<title>title</title><!--[if (mso 16)]>
<style type="text/css">
a {text-decoration: none;}
</head>
<html>
<body>
message body
</body>
</html>

Особенности отображения тем и отправителя сообщений

Яндекс обновил правила по обработке тем писем:

  • использовать кодировки UTF-8 нельзя
  • рекомендуется формировать заголовки и тело писем согласно RFC-стандартам с экранированием непечатных символов. Т.е. обязательно использовать на теме сообщения и отправителе кодировку base64, если они написаны на кириллице.

Можно использовать в них такую структуру: =?charset?encoding?encoded-text?=

Например отправлять тему в виде:

Subject: =?utf-8?B?0KLQtdGB0YIgU01UUCDlhbzQvNC+0LQ=?=
  • =? — начало кодированного слова
  • charset — utf-8 (кодировка символов)
  • encoding — B (метод кодирования)
  • encoded-text — 0KLQtdGB0YIgU01UUCDlhbzQvNC+0LQ (закодированный текст в base64)
  • ?= — конец кодированного слова

Если адрес в поле От кого сформирован не с использованием стандарта RFC, в нём будет проставляться EMPTY-FROM. В свойствах письма тоже будет From: EMPTY-FROM.

Возможные ошибки

  • invalid from email - отправляющий емейл не соответствует структуре name@domain.com
  • no username or password - не используется аутентификация AUTH PLAIN
  • api key doesn't have accesses - для API-ключа нет доступа к SMTP
  • client is deleted - аккаунт неактивен или удален
  • internal service error - внутренняя ошибка сервиса
  • wrong api key - API-ключ недействителен

Процесс отправки сообщения

Запрос → enKod → Принимающий почтовый сервер

Шаг 1. enKod проверяет полученный запрос (действителен ли API-ключ, валиден ли указанный email и др.)

  • если проверка не пройдена - возвращаем ошибку из перечня выше
  • если проверка пройдена - запрос отрабатывает успешно, сообщение попадает в очередь enKod

Шаг 2. enKod пытается связаться с почтовым сервером.

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

После того как письмо было отправлено, мы не возвращаем сразу ошибку, которая произошла на стороне принимающего почтового сервера. Из-за этого запрос может отработать успешно, но в статистике будет отражаться ошибка.

Для получения информации о финальном статусе доставки сообщения вы можете настроить Webhooks.

Последнее изменение: 2026.02.12 06:21 — Elizaveta Ivannikova