Spec-Zone.ru › Ruby on Rails 6.0

класс 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-входу.

    Используйте 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, настройте входящий веб-хук Postmark следующим полным URL-адресом:

    https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/postmark/inbound_emails

    ПРИМЕЧАНИЕ: При настройке входящего веб-хука 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–2019 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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