Spec-Zone.ru › Ruby on Rails 6.0

класс 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 если пароль ingress не настроен, или если одна из баз данных Active Record, служба Active Storage или бэкенд Active Job неправильно настроена или недоступна

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

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

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

    Используйте 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

    ПРИМЕЧАНИЕ: При настройке webhook 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! params.require(:email)
end

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

Spec-Zone.ru

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