класс 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-входу.
Используйте
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, настройте входящий веб-хук Postmark следующим полным URL-адресом: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 50
def create
ActionMailbox::InboundEmail.create_and_extract_message_id! params.require("RawEmail")
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 :unprocessable_entity
end
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.