【问题标题】:mailgun rails - How to define mailgun_settings per ActionMailermailgun rails - 如何为每个 ActionMailer 定义 mailgun_settings
【发布时间】:2018-05-11 13:49:10
【问题描述】:

我正在使用 mailgun-ruby 在我的 rails 应用程序中发送电子邮件。

我在我的 Mailgun 帐户上激活了多个域,并且我希望为每个 ActionMailer 选择一个特定的域来发送电子邮件。

gem 的文档只解释了设置 mailgun_settings 的全局方式:

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

有什么建议可以通过 ActionMailer 完成吗?

【问题讨论】:

    标签: ruby-on-rails actionmailer mailgun


    【解决方案1】:

    为此我想出了一个自制的设计:

    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.erbuser_mailer/test.html.erb并发送邮件:

     UserMailer.test
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多