繁体   English   中英

在Rails中config.action_mailer.smtp_settings和ActionMailer :: Base.smtp_settings有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM