Spec-Zone.ru › Ruby on Rails 7.2

класс 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, вы бы настроили 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 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.

Spec-Zone.ru

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