8

我在 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设置相同的设置吗?这是一个错误吗?它有原因吗?

我按照此处所述使用 Gmail 进行了尝试,并且它有效,因此 smtp_settings 确实对邮件程序有影响,但在我看来,并非所有选项都计数/有效。

4

2 回答 2

4

config.action_mailer.smtp_settings将设置转发到ActionMailer::Base.smtp_settings

但是,主要区别在于前者是特定于环境的设置,而第二个是全局设置。

换句话说,您应该确保config.action_mailer.smtp_settings在正确的环境文件中进行设置以应用设置。例如,如果您想在生产中使用这些设置,请在config/environments/production.rb文件中添加分配。同样,如果您希望将设置应用于整个项目,请将它们设置为config/application.rb.

于 2012-07-04T20:54:55.730 回答
2

我有类似的问题,config.action_mailer.smtp_settings 不起作用,但每个配置都是正确的。

最后我发现,Rails 扩展在初始化阶段覆盖了 ActionMailer::Base 设置......所以调查所有代码和所有第 3 方代码(!)、扩展、模块等应该有问题!

于 2013-04-09T18:41:08.170 回答