Spec-Zone.ru › Ruby on Rails 7.0

класс ActionMailer::MessageDelivery

Родитель:
Delegator

Класс ActionMailer::MessageDelivery используется классом ActionMailer::Base при создании нового почтового сообщения. MessageDelivery является оболочкой (подклассом Delegator) вокруг лениво созданного Mail::Message. Вы можете получить прямой доступ к Mail::Message, отправить электронное письмо или запланировать его отправку через Active Job.

Notifier.welcome(User.first)               # an ActionMailer::MessageDelivery object
Notifier.welcome(User.first).deliver_now   # sends the email
Notifier.welcome(User.first).deliver_later # enqueue email delivery as a job through Active Job
Notifier.welcome(User.first).message       # a Mail::Message object

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

deliver_later(options = {}) Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 98
def deliver_later(options = {})
  enqueue_delivery :deliver_now, options
end

Добавляет электронное письмо в очередь для отправки через Active Job. При выполнении задачи письмо будет отправлено с помощью deliver_now.

Notifier.welcome(User.first).deliver_later
Notifier.welcome(User.first).deliver_later(wait: 1.hour)
Notifier.welcome(User.first).deliver_later(wait_until: 10.hours.from_now)
Notifier.welcome(User.first).deliver_later(priority: 10)

Параметры:

  • :wait - Добавить письмо в очередь с задержкой.

  • :wait_until - Добавить письмо в очередь на определенную дату/время.

  • :queue - Добавить письмо в указанную очередь.

  • :priority - Добавить письмо с указанным приоритетом.

По умолчанию письмо будет добавлено в очередь с помощью ActionMailer::MailDeliveryJob. Каждый класс ActionMailer::Base может указать используемую задачу, установив переменную класса delivery_job.

class AccountRegistrationMailer < ApplicationMailer
  self.delivery_job = RegistrationDeliveryJob
end
deliver_later!(options = {}) Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 72
def deliver_later!(options = {})
  enqueue_delivery :deliver_now!, options
end

Добавляет электронное письмо в очередь для отправки через Active Job. При выполнении задачи письмо будет отправлено с помощью deliver_now!. Это означает, что сообщение будет отправлено, минуя проверку perform_deliveries и raise_delivery_errors, поэтому используйте с осторожностью.

Notifier.welcome(User.first).deliver_later!
Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
Notifier.welcome(User.first).deliver_later!(priority: 10)

Параметры:

  • :wait - Добавить письмо в очередь с задержкой.

  • :wait_until - Добавить письмо в очередь на определенную дату/время.

  • :queue - Добавить письмо в указанную очередь.

  • :priority - Добавить письмо с указанным приоритетом.

По умолчанию письмо будет добавлено в очередь с помощью ActionMailer::MailDeliveryJob. Каждый класс ActionMailer::Base может указать используемую задачу, установив переменную класса delivery_job.

class AccountRegistrationMailer < ApplicationMailer
  self.delivery_job = RegistrationDeliveryJob
end
deliver_now() Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 117
def deliver_now
  processed_mailer.handle_exceptions do
    message.deliver
  end
end

Отправляет электронное письмо:

Notifier.welcome(User.first).deliver_now
deliver_now!() Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 107
def deliver_now!
  processed_mailer.handle_exceptions do
    message.deliver!
  end
end

Отправляет электронное письмо, минуя проверки perform_deliveries и raise_delivery_errors, поэтому используйте с осторожностью.

Notifier.welcome(User.first).deliver_now!
message() Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 39
def message
  __getobj__
end

Возвращает полученное Mail::Message

processed?() Показать исходный код
# File actionmailer/lib/action_mailer/message_delivery.rb, line 44
def processed?
  @processed_mailer || @mail_message
end

Была ли загружена делегат, что привело к обработке действия почтового отправления?

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

Spec-Zone.ru

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