Spec-Zone.ru › Ruby on Rails 7.1

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

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

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

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

Обратите внимание, что аутентификация Basic небезопасна по протоколу 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 (<tt>bin/rails action_mailbox:ingress:exim)

    • Postfix (<tt>bin/rails action_mailbox:ingress:postfix)

    • Qmail (<tt>bin/rails action_mailbox:ingress:qmail)

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

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

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

Spec-Zone.ru

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