更改操作邮件程序导轨 5 上的操作邮件程序 SMTP 设置



我想在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

这是如何完成的:

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

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

最新更新