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_deliveriesandraise_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 44
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 DeliveryJob. Each Base class can specify the job to use by setting the class variable delivery_job.
class AccountRegistrationMailer < ApplicationMailer
self.delivery_job = RegistrationDeliveryJob
end
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 98
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 DeliveryJob. Each Base class can specify the job to use by setting the class variable delivery_job.
class AccountRegistrationMailer < ApplicationMailer
self.delivery_job = RegistrationDeliveryJob
end
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 72
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 117
def deliver_now processed_mailer.handle_exceptions do .deliver 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 107
def deliver_now! processed_mailer.handle_exceptions do .deliver! end end
#message
Returns the resulting ::Mail::Message
# File 'actionmailer/lib/action_mailer/message_delivery.rb', line 39
def __getobj__ end