Ruby on rails Rails中的config.action\u mailer.smtp\u设置和ActionMailer::Base.smtp\u设置之间有什么区别?
我在RoR应用程序中设置了与Exchange兼容的邮件服务器。我在Ruby on rails Rails中的config.action\u mailer.smtp\u设置和ActionMailer::Base.smtp\u设置之间有什么区别?,ruby-on-rails,actionmailer,Ruby On Rails,Actionmailer,我在RoR应用程序中设置了与Exchange兼容的邮件服务器。我在development.rb中使用了以下设置: config.action_mailer.smtp_settings = { :address => 'mail.server.com', :port => 5870, :user_name => 'username', :password =&g
development.rb中使用了以下设置:
config.action_mailer.smtp_settings = {
:address => 'mail.server.com',
:port => 5870,
:user_name => 'username',
:password => 'password',
:authentication => :login
}
此设置不起作用,我得到Net::SMTPAuthenticationError:504无法识别的身份验证类型。
但是,如果我在environment.rb
中应用完全相同的配置,它将完美工作:
ActionMailer::Base.smtp_settings = {
:address => 'mail.server.com',
:port => 5870,
:user_name => 'username',
:password => 'password',
:authentication => :login
}
为什么会这样?config.action\u mailer.smtp\u settings
不应该设置相同的设置吗?这是虫子吗?有原因吗
我用Gmail as试过了,它能正常工作,所以smtp\u设置对邮件程序有影响,但在我看来并不是所有选项都有效。config.action\u-mailer.smtp\u-settings
将设置转发到ActionMailer::Base.smtp\u-settings
然而,主要区别在于前者是环境特定的设置,而第二个是全局设置
换句话说,您应该确保在适当的环境文件中设置config.action\u mailer.smtp\u设置以应用这些设置。例如,如果要在生产中使用设置,请在config/environments/production.rb
文件中添加分配。同样,如果您希望将设置应用于整个项目,请在config/application.rb
中进行设置。我遇到了类似的问题,config.action\u mailer.smtp\u设置不起作用,但每个配置都是正确的
最后我发现,Rails扩展覆盖了初始化阶段的ActionMailer::Base设置。。。
因此,调查您的所有代码和所有第三方代码(!)、扩展、模块等。应该存在问题 我在development.rb
中设置了开发模式的配置,但它没有转发设置。这两者似乎不一样——这就是我的问题所在。你的意思是这是一个bug?什么扩展覆盖了它?我也有类似的问题。