Spec-Zone.ru › Ruby on Rails 6.1

class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController

Parent:
ActionMailbox::BaseController

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

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

Обратите внимание, что аутентификация Basic небезопасна по незащищенному протоколу 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 для перенаправления входящих писем на /rails/action_mailbox/sendgrid/inbound_emails с именем пользователя actionmailbox и ранее сгенерированным паролем. Если ваше приложение находится по адресу https://example.com, вы настроили SendGrid следующим полным URL:

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

    ПРИМЕЧАНИЕ: При настройке веб-хука обработки входящих писем SendGrid обязательно установите флажок *“Опубликовать исходное полное 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–2020 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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