在操作邮件程序栏5上更改ActionMailer SMTP设置

时间:2017-08-10 01:30:57

标签: ruby-on-rails

我想在ActionMailer类上更改ActionMailer SMTP设置,但是我无法更改它,这是我尝试过的。

class MyMailer < ActionMailer::Base
  def sample
    deliver_with(:mailgun)
  end

  def deliver_with(server = :transactional)
     Rails.application.config.action_mailer.smtp_settings = Rails.application.secrets[:smtp][server]
     ActionMailer::Base.smtp_settings = Rails.application.secrets[:smtp][server]
  end

2 个答案:

答案 0 :(得分:4)

这是怎么做的:

class ApplicationMailer < ActionMailer::Base
  layout 'mailer'

  after_action :config_smtp

  def sample
    deliver_with(:mailgun)
  end

   private

   def config_smtp 
      mail.delivery_method.settings.merge! @smtp_settings if @smtp_settings
    end

    def deliver_with(server = :transactional)
      server = server.to_s
      unless Rails.application.secrets[:smtp].keys.include? server
        server = "mandrill"
      end

      @smtp_settings = Rails.application.secrets[:smtp][server]
    end

关于你的秘密:

  smtp:
    mandrill:
      :address: 'smtp.mandrillapp.com'
      :port: 587
      :user_name: '123'
      :password: ''
      :authentication: 'plain'
      :enable_starttls_auto: true

    mailgun:
      :address: 'smtp.mailgun.org'
      :port: 587
      :user_name: '123@em.123.com'
      :password: ''
      :authentication: 'plain'
      :enable_starttls_auto: true

答案 1 :(得分:0)

我认为您需要在环境文件(development.rb,production.rb,test.rb)中更改这些设置,而不是在类定义中。