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 the
MessageDelivery is a wrapper (Delegator subclass) around a lazy
ActionMailer::Base when creating a new mailer.
The ActionMailer::MessageDelivery class is used by

def __getobj__ #:nodoc:

:nodoc:
def __getobj__ #:nodoc:
  @obj ||= @mailer.send(:new, @mail_method, *@args).message
end

def __setobj__(obj) #:nodoc:

:nodoc:
def __setobj__(obj) #:nodoc:
  @obj = obj
end

def deliver #:nodoc:

: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:

: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_until - Enqueue the email to be delivered at (after) a specific date / time
* :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_until - Enqueue the email to be delivered at (after) a specific date / time
* :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:

:nodoc:
def initialize(mailer, mail_method, *args) #:nodoc:
  @mailer = mailer
  @mail_method = mail_method
  @args = args
end

def message

Returns the Mail::Message object
def message
  __getobj__
end