Spec-Zone.ru › Ruby on Rails 8.1

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

Родительский класс:
ActionMailbox::BaseController

Принимает входящие электронные письма от SendGrid. Требуется параметр email, содержащий полное сообщение RFC 822.

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

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

Возвращает:

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

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

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

  • 422 Unprocessable Entity, если в запросе отсутствует обязательный параметр email

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

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

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

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

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

    action_mailbox:
      ingress_password: ...

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

  3. Настройте Inbound Parse в SendGrid, чтобы пересылать входящие письма на /rails/action_mailbox/sendgrid/inbound_emails с именем пользователя actionmailbox и ранее сгенерированным паролем. Если бы ваше приложение было доступно по адресу https://example.com, в SendGrid следовало бы настроить следующий полный URL:

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

    ПРИМЕЧАНИЕ: При настройке веб-перехватчика SendGrid Inbound Parse обязательно установите флажок «Post the raw, full MIME message» («Отправлять исходное сообщение MIME целиком»). Для работы Action Mailbox требуется исходное сообщение MIME.

Открытые методы экземпляра

create () Показать исходный код
# File actionmailbox/app/controllers/action_mailbox/ingresses/sendgrid/inbound_emails_controller.rb, line 51
def create
  ActionMailbox::InboundEmail.create_and_extract_message_id! mail
rescue JSON::ParserError => error
  logger.error error.message
  head ActionDispatch::Constants::UNPROCESSABLE_CONTENT
end

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

Spec-Zone.ru

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