class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController
Обрабатывает входящие электронные письма из 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 неправильно настроена или недоступна
Использование
-
Укажите Action Mailbox для приема писем от SendGrid:
# config/environments/production.rb config.action_mailbox.ingress = :sendgrid
-
Сгенерируйте надежный пароль, который Action Mailbox может использовать для проверки подлинности запросов к входу SendGrid.
Используйте
bin/rails credentials:editдля добавления пароля в зашифрованные учетные данные приложения вaction_mailbox.ingress_password, где Action Mailbox автоматически найдет его:action_mailbox: ingress_password: ...
В качестве альтернативы, укажите пароль в переменной среды
RAILS_INBOUND_EMAIL_PASSWORD. -
Настройте 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 для работы.
Методы открытого экземпляра
# 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.