рельсы почтового оружия - как определить mailgun_settings для ActionMailer - PullRequest
0 голосов
/ 11 мая 2018

Я использую mailgun-ruby для отправки электронных писем в приложении rails.

Я активировал несколько доменов в моей учетной записи Mailgun, и для каждого ActionMailer я хочу выбрать определенный домен для отправки писем.

Документация к гему объясняет только глобальный способ установки mailgun_settings:

config.action_mailer.delivery_method  = :mailgun
config.action_mailer.mailgun_settings = {
  api_key: 'api-myapikey',
  domain:  'mydomain.com'
}

Любое предложение, как это можно сделать в ActionMailer?

1 Ответ

0 голосов
/ 11 мая 2018

Я придумал самодельный дизайн для этого:

class ApplicationMailer < ActionMailer::Base
  before_action do
    @layout  = 'mailer'
    @from    = 'default@domain.com'
    @to      = 'default_to@domain.com'
    @subject = 'Default Subject'
    @domain  = 'default.domain.com'
    @params  = {}
  end

  after_action do
    ac = ActionController::Base.new()
    mg = Mailgun::Client.new 'key-xxxxxxxxx'
    message_params =  { 
      from:    @from,
      to:      @to,
      subject: @subject,
      text:    ac.render_to_string("#{self.class.to_s.underscore}/#{action_name}.text", layout: @layout, locals: @params),
      html:    ac.render_to_string("#{self.class.to_s.underscore}/#{action_name}.html", layout: @layout, locals: @params)
    }
    mg.send_message @domain, message_params
  end
end


class UserMailer < ApplicationMailer
  before_action do
    @from = 'Domain <updates@domain.com>'
    @domain = 'updates.domain.com'
  end

  def test
    @to = "yourself@gmail.com"
    @subject = "Test"
    @params = {}
  end
end

Настройте user_mailer/test.txt.erb и user_mailer/test.html.erb и отправьте электронное письмо:

 UserMailer.test
...