class ActionMailer::MessageDelivery
Notifier.welcome(User.first).message # a Mail::Message object
Notifier.welcome(User.first).deliver_later # enqueue email delivery as a job through Active Job
Notifier.welcome(User.first).deliver_now # sends the email
Notifier.welcome(User.first) # an ActionMailer::MessageDelivery object
through Active Job.Mail::Message
, deliver the email or schedule the email to be sent
created Mail::Message
. You can get direct access to theMessageDelivery
is a wrapper (Delegator
subclass) around a lazyActionMailer::Base
when creating a new mailer.
The ActionMailer::MessageDelivery
class is used by
def __getobj__ #:nodoc:
def __getobj__ #:nodoc: @obj ||= @mailer.send(:new, @mail_method, *@args).message end
def __setobj__(obj) #:nodoc:
def __setobj__(obj) #:nodoc: @obj = obj end
def deliver #:nodoc:
def deliver #:nodoc: ActiveSupport::Deprecation.warn "#deliver is deprecated and will be removed in Rails 5. " \ "Use #deliver_now to deliver immediately or #deliver_later to deliver through Active Job." deliver_now end
def deliver! #:nodoc:
def deliver! #:nodoc: ActiveSupport::Deprecation.warn "#deliver! is deprecated and will be removed in Rails 5. " \ "Use #deliver_now! to deliver immediately or #deliver_later! to deliver through Active Job." deliver_now! end
def deliver_later(options={})
* :wait - Enqueue the email to be delivered with a delay
Options:
Notifier.welcome(User.first).deliver_later(wait_until: 10.hours.from_now)
Notifier.welcome(User.first).deliver_later(wait: 1.hour)
Notifier.welcome(User.first).deliver_later
job runs it will send the email using +deliver_now+.
Enqueues the email to be delivered through Active Job. When the
def deliver_later(options={}) enqueue_delivery :deliver_now, options end
def deliver_later!(options={})
* :wait - Enqueue the email to be delivered with a delay
Options:
Notifier.welcome(User.first).deliver_later!(wait_until: 10.hours.from_now)
Notifier.welcome(User.first).deliver_later!(wait: 1.hour)
Notifier.welcome(User.first).deliver_later!
and +raise_delivery_errors+, so use with caution.
that the message will be sent bypassing checking +perform_deliveries+
job runs it will send the email using +deliver_now!+. That means
Enqueues the email to be delivered through Active Job. When the
def deliver_later!(options={}) enqueue_delivery :deliver_now!, options end
def deliver_now
Notifier.welcome(User.first).deliver_now
Delivers an email:
def deliver_now message.deliver end
def deliver_now!
Notifier.welcome(User.first).deliver_now!
so use with caution.
Delivers an email without checking +perform_deliveries+ and +raise_delivery_errors+,
def deliver_now! message.deliver! end
def enqueue_delivery(delivery_method, options={})
def enqueue_delivery(delivery_method, options={}) args = @mailer.name, @mail_method.to_s, delivery_method.to_s, *@args ActionMailer::DeliveryJob.set(options).perform_later(*args) end
def initialize(mailer, mail_method, *args) #:nodoc:
def initialize(mailer, mail_method, *args) #:nodoc: @mailer = mailer @mail_method = mail_method @args = args end
def message
def message __getobj__ end