Spec-Zone.ru › Ruby on Rails 8.0

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

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

Обрабатывает входящие электронные письма из Postmark. Требуется параметр RawEmail содержащий полное сообщение RFC 822.

Аутентифицирует запросы с помощью HTTP-аутентификации с использованием базового доступа. Имя пользователя всегда actionmailbox, а пароль считывается из зашифрованных учетных данных приложения или переменной окружения. См. раздел Использование ниже.

Обратите внимание, что базовая аутентификация небезопасна по незащищенному протоколу HTTP. Злоумышленник, перехватывающий запросы в открытом виде к Postmark ingress, может узнать пароль. Вы должны использовать Postmark ingress только по HTTPS.

Возвращает:

  • 204 No Content если входящее письмо успешно записано и поставлено в очередь для маршрутизации в соответствующий почтовый ящик

  • 401 Unauthorized если подпись запроса не удалось проверить

  • 404 Not Found если Action Mailbox не настроен на прием входящих писем из Postmark

  • 422 Unprocessable Entity если в запросе отсутствует требуемый параметр RawEmail

  • 500 Server Error если пароль ingress не настроен или один из бэкендов Active Record базы данных, Active Storage сервиса или Active Job не настроен корректно или недоступен

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

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

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

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

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

    ПРИМЕЧАНИЕ: При настройке вашего Postmark входящего webhook, убедитесь, что вы отметили поле *“Включать исходный контент письма в JSON-payload”*. 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! mail
    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