Spec-Zone.ru › Ruby on Rails 7.0

class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController

Parent:
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. Настройте 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 50
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