класс 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. -
Настройте Inbound Parse в 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 Inbound Parse обязательно установите флажок «Post the raw, full MIME message» («Отправлять исходное сообщение MIME целиком»). Для работы Action Mailbox требуется исходное сообщение MIME.
Открытые методы экземпляра
# 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 ActionDispatch::Constants::UNPROCESSABLE_CONTENT end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.