class ActionMailer::MessageDelivery - actionmailer-4.2.3 Documentation

# class ActionMailer::MessageDelivery

The `ActionMailer::MessageDelivery` class is used by `ActionMailer::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).message       # a Mail::Message object

### Public Instance Methods

deliver_later(options={}) click to toggle source

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)

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

    # File lib/action_mailer/message_delivery.rb, line 67
    def deliver_later(options={})
      enqueue_delivery :deliver_now, options
    end

deliver_later!(options={}) click to toggle source

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)

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

    # File lib/action_mailer/message_delivery.rb, line 51
    def deliver_later!(options={})
      enqueue_delivery :deliver_now!, options
    end

deliver_now() click to toggle source

Delivers an email:

    Notifier.welcome(User.first).deliver_now

    # File lib/action_mailer/message_delivery.rb, line 84
    def deliver_now
      message.deliver
    end

deliver_now!() click to toggle source

Delivers an email without checking `perform_deliveries` and `raise_delivery_errors`, so use with caution.

    Notifier.welcome(User.first).deliver_now!

    # File lib/action_mailer/message_delivery.rb, line 76
    def deliver_now!
      message.deliver!
    end

message() click to toggle source

Returns the Mail::Message object

    # File lib/action_mailer/message_delivery.rb, line 33
    def message
      __getobj__
    end

### Private Instance Methods

enqueue_delivery(delivery_method, options={}) click to toggle source

    # File lib/action_mailer/message_delivery.rb, line 110
    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