Class: ActionMailer::MessageDelivery
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
ActionMailer::Parameterized::MessageDelivery
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::Delegator
|
|
Instance Chain:
self,
::Delegator
|
|
Inherits: | Delegator |
Defined in: | actionmailer/lib/action_mailer/message_delivery.rb |
Overview
The MessageDelivery
class is used by Base
when creating a new mailer. MessageDelivery
is a wrapper (::Delegator
subclass) around a lazy created ::Mail::Message
. You can get direct access to the ::Mail::Message
, deliver the email or schedule the email to be sent through 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). # a Mail::Message object
Instance Attribute Summary
-
#processed? ⇒ Boolean
readonly
Was the delegate loaded, causing the mailer action to be processed?
Instance Method Summary
-
#deliver_later(options = {})
Enqueues the email to be delivered through Active Job.
-
#deliver_later!(options = {})
Enqueues the email to be delivered through Active Job.
-
#deliver_now
Delivers an email:
-
#deliver_now!
Delivers an email without checking
perform_deliveries
andraise_delivery_errors
, so use with caution. -
#message
Returns the resulting
::Mail::Message
::Delegator
- Inherited
#try | See Object#try |
#try! | See Object#try! |
Instance Attribute Details
#processed? ⇒ Boolean
(readonly)
Was the delegate loaded, causing the mailer action to be processed?
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 46
def processed? @processed_mailer || @mail_message end
Instance Method Details
#deliver_later(options = {})
Enqueues the email to be delivered through Active Job. When the job runs it will send the email using #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)
Options:
-
:wait
- Enqueue the email to be delivered with a delay. -
:wait_until
- Enqueue the email to be delivered at (after) a specific date / time. -
:queue
- Enqueue the email on the specified queue. -
:priority
- Enqueues the email with the specified priority
By default, the email will be enqueued using MailDeliveryJob
on the default queue. Mailer classes can customize the queue name used for the default job by assigning a deliver_later_queue_name
class variable, or provide a custom job by assigning a delivery_job
. When a custom job is used, it controls the queue name.
class AccountRegistrationMailer < ApplicationMailer
self.delivery_job = RegistrationDeliveryJob
end
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 102
def deliver_later( = {}) enqueue_delivery :deliver_now, end
#deliver_later!(options = {})
Enqueues the email to be delivered through Active Job. When the job runs it will send the email using #deliver_now!. That means that the message will be sent bypassing checking perform_deliveries
and raise_delivery_errors
, so use with caution.
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)
Options:
-
:wait
- Enqueue the email to be delivered with a delay -
:wait_until
- Enqueue the email to be delivered at (after) a specific date / time -
:queue
- Enqueue the email on the specified queue -
:priority
- Enqueues the email with the specified priority
By default, the email will be enqueued using MailDeliveryJob
on the default queue. Mailer classes can customize the queue name used for the default job by assigning a deliver_later_queue_name
class variable, or provide a custom job by assigning a delivery_job
. When a custom job is used, it controls the queue name.
class AccountRegistrationMailer < ApplicationMailer
self.delivery_job = RegistrationDeliveryJob
end
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 75
def deliver_later!( = {}) enqueue_delivery :deliver_now!, end
#deliver_now
Delivers an email:
Notifier.welcome(User.first).deliver_now
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 123
def deliver_now processed_mailer.handle_exceptions do processed_mailer.run_callbacks(:deliver) do .deliver end end end
#deliver_now!
Delivers an email without checking perform_deliveries
and raise_delivery_errors
, so use with caution.
Notifier.welcome(User.first).deliver_now!
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 111
def deliver_now! processed_mailer.handle_exceptions do processed_mailer.run_callbacks(:deliver) do .deliver! end end end
#message
Returns the resulting ::Mail::Message
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 41
def __getobj__ end