Spec-Zone.ru › Ruby on Rails 7.2

класс ActionMailbox::Ingresses::Relay::InboundEmailsController

Родитель:
ActionMailbox::BaseController

Обрабатывает входящие электронные письма, переданные с сервера SMTP.

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

Обратите внимание, что аутентификация по имени пользователю и паролю небезопасна при использовании незащищенного HTTP. Злоумышленник, перехватывающий запросы в открытом виде, может узнать пароль. Используйте этот вход только через HTTPS.

Возвращает:

  • 204 No Content если входящее электронное письмо успешно записано и поставлено в очередь для маршрутизации в соответствующий почтовый ящик

  • 401 Unauthorized если запрос не смог пройти проверку подлинности

  • 404 Not Found если Action Mailbox не настроен для приема входящих электронных писем, переданных с сервера SMTP

  • 415 Unsupported Media Type если запрос не содержит сообщение RFC 822

  • 500 Server Error если пароль входа не настроен или одна из баз данных Active Record, служба Active Storage или бэкенд Active Job неправильно настроена или недоступна

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

  1. Укажите Action Mailbox принять письма от SMTP-ретранслятора:

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

    Используйте bin/rails credentials:edit для добавления пароля в зашифрованные данные вашего приложения в action_mailbox.ingress_password, где Action Mailbox автоматически его найдет:

    action_mailbox:
      ingress_password: ...

    В качестве альтернативы, укажите пароль в переменной среды RAILS_INBOUND_EMAIL_PASSWORD.

  3. Настройте свой SMTP-сервер для передачи входящих писем в соответствующую команду входа, предоставив URL ретрансляционного входа и INGRESS_PASSWORD пароль, который вы ранее сгенерировали.

    Если ваше приложение расположено по адресу https://example.com, вы настроили бы сервер SMTP Postfix для перенаправления входящих писем в следующую команду:

    $ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/postfix/inbound_emails INGRESS_PASSWORD=...

    Для этих популярных SMTP-серверов доступны встроенные команды входа:

    • Exim (bin/rails action_mailbox:ingress:exim)

    • Postfix (bin/rails action_mailbox:ingress:postfix)

    • Qmail (bin/rails action_mailbox:ingress:qmail)

Методы экземпляра публичного класса

create() Показать исходный код
# File actionmailbox/app/controllers/action_mailbox/ingresses/relay/inbound_emails_controller.rb, line 54
def create
  if request.body
    ActionMailbox::InboundEmail.create_and_extract_message_id! request.body.read
  else
    head :unprocessable_entity
  end
end

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

Spec-Zone.ru

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