Отправка по 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 должен стоять адрес, от имени которого ключ может отправлять.
From: Acme <[email protected]>To: [email protected]Subject: Hello over SMTPMessage-ID: <[email protected]> It works.curl --url "smtps://smtp.openemail.uk:465" \ --user "openemail:$OPENEMAIL_API_KEY" \ --mail-from "[email protected]" \ --mail-rcpt "[email protected]" \ --upload-file message.eml --crlfcurl --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, поэтому оно собирается заново из своих частей, а не передаётся дальше побайтно.
| В сообщении | В отправке |
|---|---|
| From | from. Обязателен, и именно по этому отправителю проверяется ключ. Адрес в MAIL FROM должен просто присутствовать. |
| RCPT TO | Те, кому доставляется сообщение, не более 50. Получатель, указанный в To, становится to, указанный в Cc, становится cc, а тот, кого нет ни там, ни там, становится bcc. Хотя бы один должен быть в To. |
| Reply-To | replyTo, первый адрес. |
| Subject | subject. |
| Текстовая и HTML-части | text и html. Изображение, которое HTML использует как cid:, встраивается там, где оно стоит. |
| Вложения | attachments: не более 20 файлов и 5 МБ в сумме. |
| Другие заголовки | X-*, List-*, Precedence, Auto-Submitted, Importance, Priority и Feedback-ID сохраняются. Все остальные заголовки отбрасываются. |
| X-OpenEmail-Stream | stream: 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. Вход, который не удался с настоящим ключом, виден в активности этого ключа.