Spec-Zone.ru › Ruby on Rails 8.1

class 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 ActionDispatch::Constants::UNPROCESSABLE_CONTENT
  end
end

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

Spec-Zone.ru

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