我想在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
答案 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)中更改这些设置,而不是在类定义中。