Перейти к содержанию

SMTP-шлюз

SMTP-шлюз принимает стандартную отправку почты и перенаправляет каждое сообщение в Messaging API v2 Notify как транзакционное email-сообщение. Используйте его, когда существующий почтовый инструмент — MTA, почтовый клиент фреймворка, SDK — проще подключить, чем выполнять JSON-запрос к API.

Как это работает

Anchor link to
любой SMTP-клиент smtp-шлюз Messaging API v2
──────────────── ──────> ──────────────── ──────> ─────────────────
отправка STARTTLS gRPC Notify
AUTH PLAIN + AUTH PLAIN Authorization: Token
  1. Клиент подключается к smtp.pushwoosh.com по порту 587, обновляет соединение до TLS с помощью STARTTLS, а затем аутентифицируется с помощью AUTH PLAIN.
  2. Шлюз анализирует MIME-сообщение и создает запрос Notify с platforms: ["EMAIL"] и message_type: TRANSACTIONAL.
  3. API-токен из AUTH PLAIN перенаправляется в Messaging API в качестве заголовка Authorization. Проверка токена, сопоставление приложений, идентификация отправителя и обработка возвратов происходят на стороне API.

Эндпоинт

Anchor link to
Настройка
Значение
Хостsmtp.pushwoosh.com
Порт587 (отправка SMTP)
TLSSTARTTLS — обязательно перед AUTH
АутентификацияAUTH PLAIN

Аутентификация

Anchor link to

AUTH PLAIN использует два учетных данных Pushwoosh.

Поле AUTH
Значение Pushwoosh
usernameКод приложения, например XXXXX-XXXXX
passwordТокен Server API

AUTH отклоняется вне TLS. Токен никогда не появляется в сообщении — он используется только для авторизации вышестоящего вызова Notify.

Как сообщения сопоставляются с Notify

Anchor link to
Поле MIME или SMTP
Поле Notify
RCPT TOtarget.users.list — Pushwoosh преобразует эти адреса в подписчиков
username в AUTHapplication
Заголовок Subject:email_payload.subject["default"] (декодировано по RFC 2047)
Заголовок From:email_payload.fromname и email
HTML-частьemail_payload.body (предпочтительно, если присутствуют обе части)
Текстовая частьemail_payload.body (используется, если HTML отсутствует)
MAIL FROMИгнорируется — Pushwoosh подставляет свою собственную идентификацию отправителя и самостоятельно обрабатывает возвраты

Каждое сообщение отправляется с schedule.send_date: now.

Ограничения

Anchor link to
Ограничение
Значение
Максимальный размер сообщения25 МиБ
Максимальное количество получателей на конверт (RCPT TO)50

Сопоставление ошибок

Anchor link to

Коды статуса gRPC, возвращаемые Messaging API, переводятся в стандартные коды ответа SMTP, чтобы любой SMTP-клиент мог отобразить осмысленную ошибку.

Статус gRPC на сервере
Ответ SMTP
Значение
Unauthenticated535 5.7.8Неверный код приложения или API-токен.
PermissionDenied550 5.7.1Токен не имеет прав для этого приложения.
InvalidArgument / FailedPrecondition / OutOfRange550 5.6.0Неверное MIME-содержимое (например, отсутствует тема или тело сообщения).
NotFound550 5.1.1Приложение или получатель не найдены.
ResourceExhausted452 4.5.3Достигнут лимит скорости — повторите попытку позже.
DeadlineExceeded / Unavailable451 4.4.1Временная ошибка на стороне сервера — повторите попытку позже.
любой другой сбой451 4.5.0Временная внутренняя ошибка — повторите попытку позже.

Коды в диапазоне 4xx являются временными и должны быть повторены клиентом; коды в диапазоне 5xx являются постоянными и требуют исправления на стороне клиента.

Пример: отправка с помощью swaks

Anchor link to
Terminal window
swaks --server smtp.pushwoosh.com:587 \
--auth-user "XXXXX-XXXXX" \
--auth-password "YOUR_API_TOKEN" \
--tls \
--from from@example.com \
--to user@example.com \
--header "Subject: Hello from SMTP gateway" \
--body "Plain-text body"

Заголовок From: в теле MIME — это то, что доходит до Pushwoosh; конверт --from (MAIL FROM) отбрасывается.

Примечания

Anchor link to
  • Шлюз не имеет состояния и не хранит сообщения. После пересылки за доставку отвечает Messaging API.
  • Возвраты, жалобы и ссылки для отписки обрабатываются Pushwoosh так же, как и для любого другого транзакционного email-сообщения.
  • Для отправки кампаний (сегменты, планирование, A/B) используйте Notify напрямую — SMTP-шлюз предназначен только для отправки.

Смотрите также

Anchor link to