класс ActionMailbox::Ingresses::Postmark::InboundEmailsController
Получает входящие письма из Postmark. Требует параметр RawEmail, содержащий полное сообщение RFC 822.
Аутентифицирует запросы с помощью базовой HTTP-аутентификации. Имя пользователя всегда равно actionmailbox, а пароль считывается из зашифрованных учётных данных приложения или переменной среды. См. раздел «Использование» ниже.
Обратите внимание: базовая аутентификация небезопасна при использовании незашифрованного HTTP. Злоумышленник, перехвативший незашифрованные запросы к точке входа Postmark, может узнать её пароль. Используйте точку входа Postmark только через HTTPS.
Возвращает:
-
204 No Content, если входящее письмо успешно сохранено и поставлено в очередь для маршрутизации в соответствующий почтовый ящик -
401 Unauthorized, если подпись запроса не удалось проверить -
404 Not Found, если Action Mailbox не настроен на приём входящих писем из Postmark -
422 Unprocessable Entity, если в запросе отсутствует обязательный параметрRawEmail -
500 Server Error, если пароль точки входа не настроен или если база данных Active Record, служба Active Storage либо серверная часть Active Job настроены неправильно или недоступны
Использование
-
Укажите Action Mailbox принимать письма из Postmark:
# config/environments/production.rb config.action_mailbox.ingress = :postmark
-
Создайте надёжный пароль, который Action Mailbox будет использовать для аутентификации запросов к точке входа Postmark.
Используйте
bin/rails credentials:edit, чтобы добавить пароль в зашифрованные учётные данные приложения в разделеaction_mailbox.ingress_password, где Action Mailbox автоматически найдёт его:action_mailbox: ingress_password: ...
В качестве альтернативы укажите пароль в переменной среды
RAILS_INBOUND_EMAIL_PASSWORD. -
Настройте Postmark для пересылки входящих писем на
/rails/action_mailbox/postmark/inbound_emails, указав имя пользователяactionmailboxи пароль, созданный ранее. Если бы ваше приложение было размещено по адресуhttps://example.com, URL-адрес веб-перехватчика для входящих писем в Postmark выглядел бы так:https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/postmark/inbound_emails
ПРИМЕЧАНИЕ: При настройке веб-перехватчика Postmark для входящих писем обязательно установите флажок *«Включать необработанное содержимое письма в полезные данные JSON»*. Для работы Action Mailbox требуется необработанное содержимое письма.
Открытые методы экземпляра
# File actionmailbox/app/controllers/action_mailbox/ingresses/postmark/inbound_emails_controller.rb, line 51
def create
ActionMailbox::InboundEmail.create_and_extract_message_id! mail
rescue ActionController::ParameterMissing => error
logger.error <<~MESSAGE
#{error.message}
When configuring your Postmark inbound webhook, be sure to check the box
labeled "Include raw email content in JSON payload".
MESSAGE
head ActionDispatch::Constants::UNPROCESSABLE_CONTENT
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.