класс 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, вы бы настроили 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 51
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–2021 David Heinemeier Hansson
Licensed under the MIT License.