Spec-Zone.ru › Ruby on Rails 6.1

класс ActionMailbox::Ingresses::Postmark::InboundEmailsController

Родитель:
ActionMailbox::BaseController

Обрабатывает входящие электронные письма из 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 неправильно настроен или недоступен

Использование

  1. Укажите Action Mailbox на прием писем от Postmark:

    # config/environments/production.rb
    config.action_mailbox.ingress = :postmark
    
  2. Сгенерируйте надежный пароль, который Action Mailbox может использовать для проверки подлинности запросов к входу Postmark.

    Используйте bin/rails credentials:edit для добавления пароля в зашифрованные учетные данные приложения под action_mailbox.ingress_password, где Action Mailbox автоматически его найдет:

    action_mailbox:
      ingress_password: ...

    В качестве альтернативы, укажите пароль в переменной среды RAILS_INBOUND_EMAIL_PASSWORD

  3. Настройте 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 нуждается в исходном содержимом письма, чтобы работать.

Общедоступные методы экземпляров

create() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API