класс 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, вы бы настроили ваш webhook в Postmark для входящей почты следующим полным URL:https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/postmark/inbound_emails
ПРИМЕЧАНИЕ: При настройке вашего входящего webhook 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–2020 David Heinemeier Hansson
Licensed under the MIT License.