Перейти к документации
API

Отправка по SMTP

Та же отправка, что и POST /emails, для программ, которые работают по SMTP.

Подключение

Всё, что отправляет почту через SMTP-сервер, может отправлять через OpenEmail: почтовый модуль фреймворка, CMS, система мониторинга, принтер. Входите с именем пользователя openemail и API-ключом в качестве пароля. Ключу нужен скоуп emails:send, и сообщение, которое он передаёт, это та же отправка, что и POST /emails с этим ключом.

НастройкаЗначение
Хостsmtp.openemail.uk
Порт465 с SSL/TLS или 587 со STARTTLS
Имя пользователяopenemail
ПарольAPI-ключ со скоупом emails:send
ВходPLAIN или LOGIN, которые большинство программ называет обычным паролем

Без шифрования ничего не принимается, а на порту 587 вход открывается только после STARTTLS. API-ключ входит только для отправки. Чтобы читать почтовый ящик по IMAP или POP3, нужен пароль приложения.

Отправить тестовое сообщение

Сохраните сообщение как message.eml и передайте его через curl. В From должен стоять адрес, от имени которого ключ может отправлять.

message.eml
From: Acme <[email protected]>To: [email protected]Subject: Hello over SMTPMessage-ID: <[email protected]> It works.
Порт 465
curl --url "smtps://smtp.openemail.uk:465" \  --user "openemail:$OPENEMAIL_API_KEY" \  --mail-from "[email protected]" \  --mail-rcpt "[email protected]" \  --upload-file message.eml --crlf
Порт 587
curl --ssl-reqd --url "smtp://smtp.openemail.uk:587" \  --user "openemail:$OPENEMAIL_API_KEY" \  --mail-from "[email protected]" \  --mail-rcpt "[email protected]" \  --upload-file message.eml --crlf

В ответ на принятое сообщение приходит 250 2.0.0 OK queued as и следом его id. Это тот самый id, который принимает GET /emails/{id}, поэтому сообщение, его события и отслеживание читаются так же, как у любой другой отправки.

Как сообщение становится отправкой

Сообщение читается и отправляется тем же путём, что и отправка через REST, поэтому оно собирается заново из своих частей, а не передаётся дальше побайтно.

В сообщенииВ отправке
Fromfrom. Обязателен, и именно по этому отправителю проверяется ключ. Адрес в MAIL FROM должен просто присутствовать.
RCPT TOТе, кому доставляется сообщение, не более 50. Получатель, указанный в To, становится to, указанный в Cc, становится cc, а тот, кого нет ни там, ни там, становится bcc. Хотя бы один должен быть в To.
Reply-ToreplyTo, первый адрес.
Subjectsubject.
Текстовая и HTML-частиtext и html. Изображение, которое HTML использует как cid:, встраивается там, где оно стоит.
Вложенияattachments: не более 20 файлов и 5 МБ в сумме.
Другие заголовкиX-*, List-*, Precedence, Auto-Submitted, Importance, Priority и Feedback-ID сохраняются. Все остальные заголовки отбрасываются.
X-OpenEmail-Streamstream: transactional или broadcast. Заголовок удаляется перед отправкой сообщения.

Что действует

Всё, что действует для отправки через REST, действует и здесь, потому что путь один.

  • Скоупы ключа, а также адреса и домены, которыми он ограничен.
  • Проверка отправителя: From это адрес на домене, который может отправлять, и адрес, от имени которого ключ может отправлять.
  • Лимит отправок рабочего пространства и его список подавления.
  • Подпись и отслеживание открытий и переходов адреса, с которого идёт отправка, как при отправке через REST, в которой не заданы ни signature, ни tracking.
  • Полоса: пока полоса рассылок приостановлена, сообщение с X-OpenEmail-Stream: broadcast отклоняется.
  • Вебхуки и события доставки, которые называют сообщение по id из ответа 250.

Повторы

Сообщение с Message-ID отправляется один раз. Если снова передать тот же Message-ID тем же получателям, в ответ придёт id первого сообщения, и ничего не отправится, поэтому программа, которая повторяет попытку после обрыва соединения, не сможет отправить его дважды. То же сообщение другим получателям это уже другая отправка. См. Идемпотентность.

Ответы и лимиты

ОтветКогда
250 2.0.0Сообщение поставлено в очередь, следом идёт его id.
535 5.7.8Вход не удался: неверный, отозванный или просроченный ключ, ключ без emails:send или API-ключ под другим именем пользователя.
452 4.5.3Больше 50 получателей в одном сообщении. Остальным почтовая программа сама отправит ещё одно.
552 5.3.4Сообщение больше 25 МБ.
550 5.6.0Сообщение нельзя отправить в том виде, в каком оно написано: нет From, никого в To, вложений слишком много или они слишком большие, неизвестная полоса. В тексте сказано, что именно.
550 5.7.1Отправка отклонена: ключ не может отправлять от имени этого адреса, домен пока не может отправлять или полоса рассылок приостановлена.
452 4.7.0Лимит отправок рабочего пространства исчерпан.
451 4.7.1Больше 300 сообщений с одного ключа за минуту. Почтовая программа подождёт и повторит попытку.
451 4.3.0Сбой на нашей стороне. Попробуйте ещё раз чуть позже.

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

В журнале запросов

Каждое сообщение, которое передаёт ключ, это строка в его журнале запросов, с методом SMTP, путём /emails и статусом, который был бы у отправки через REST: 202, когда оно поставлено в очередь, и 403, 422 или 429 с тем же code ошибки, когда оно отклонено. GET /keys/{id}/requests?path=/emails выводит их рядом с отправками через REST. Вход, который не удался с настоящим ключом, виден в активности этого ключа.