[英]What is the difference between config.action_mailer.smtp_settings and ActionMailer::Base.smtp_settings in Rails?
我在RoR应用程序中设置了Exchange兼容的邮件服务器。 我在development.rb
使用了以下设置:
config.action_mailer.smtp_settings = {
:address => 'mail.server.com',
:port => 5870,
:user_name => 'username',
:password => 'password',
:authentication => :login
}
此设置不起作用,我得到Net::SMTPAuthenticationError: 504 Unrecognized authentication type.
但是,如果我在environment.rb
应用完全相同的配置,它可以完美地工作:
ActionMailer::Base.smtp_settings = {
:address => 'mail.server.com',
:port => 5870,
:user_name => 'username',
:password => 'password',
:authentication => :login
}
为什么是这样? config.action_mailer.smtp_settings
不应该设置相同的设置吗? 这是一个错误吗? 它有原因吗?
我按照这里的说法尝试了它,它有效 ,所以smtp_settings确实对邮件有影响,但在我看来并非所有的选项都计算/工作。
config.action_mailer.smtp_settings
将设置转发给ActionMailer::Base.smtp_settings
。
但是,主要区别在于前者是特定于环境的设置,而第二个是全局设置。
换句话说,您应该确保在适当的环境文件中设置config.action_mailer.smtp_settings
以应用设置。 例如,如果要使用生产中的设置,请在config/environments/production.rb
文件中添加分配。 同样,如果要将设置应用于整个项目,请在config/application.rb
。
我有类似的问题,config.action_mailer.smtp_settings不起作用,但每个配置都是正确的。
最后我发现,Rails扩展会覆盖初始化阶段的ActionMailer :: Base设置......所以调查所有代码和所有第三方代码(!),扩展,模块等应该有问题!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.