class Railgun::Mailer

Railgun::Mailer is an ActionMailer provider for sending mail through Mailgun.

Attributes

config[RW]
Hash

config ->

Requires *at least* `api_key` and `domain` keys.
domain[RW]
Hash

config ->

Requires *at least* `api_key` and `domain` keys.
settings[RW]
Hash

config ->

Requires *at least* `api_key` and `domain` keys.

Public Class Methods

new(config) click to toggle source

Initialize the Railgun mailer.

@param [Hash] config Hash of config values, typically from `app_config.action_mailer.mailgun_config`

# File lib/railgun/mailer.rb, line 19
def initialize(config)
  @config = config

  [:api_key, :domain].each do |k|
    raise Railgun::ConfigurationError.new("Config requires `#{k}` key", @config) unless @config.has_key?(k)
  end

  @mg_client = Mailgun::Client.new(config[:api_key])
  @domain = @config[:domain]

  # To avoid exception in mail gem v2.6
  @settings = { return_response: true }

  if (@config[:fake_message_send] || false)
    Rails.logger.info "NOTE: fake message sending has been enabled for mailgun-ruby!"
    @mg_client.enable_test_mode!
  end
end

Public Instance Methods

deliver!(mail) click to toggle source
# File lib/railgun/mailer.rb, line 38
def deliver!(mail)
  mg_message = Railgun.transform_for_mailgun(mail)
  response = @mg_client.send_message(@domain, mg_message)

  if response.code == 200 then
    mg_id = response.to_h['id']
    mail.message_id = mg_id
  end
  response
end
mailgun_client() click to toggle source
# File lib/railgun/mailer.rb, line 49
def mailgun_client
  @mg_obj
end