Spec-Zone.ru › Ruby on Rails 8.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, URL-адрес веб-перехватчика для входящих писем в Postmark выглядел бы так:

    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! 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 ActionDispatch::Constants::UNPROCESSABLE_CONTENT
    end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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