Spec-Zone.ru › Ruby on Rails 7.1

class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController

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

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

Аутентификация запросов осуществляется с помощью HTTP Basic Access Authentication. Имя пользователя всегда 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. Настройте SendGrid Inbound Parse для пересылки входящих электронных писем на /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 обязательно установите флажок «Отправить необработанное, полное сообщение 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 :unprocessable_entity
end

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

Spec-Zone.ru

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