2012-07-04 25 views
8

我在RoR應用程序中設置了Exchange兼容郵件服務器。我用下面的設置在development.rbRails中config.action_mailer.smtp_settings和ActionMailer :: Base.smtp_settings有什麼區別?

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試過爲told here,它工作,所以smtp_settings確實對郵件的效果,但它似乎對我來說,不是所有的選項數/工作。

回答

4

config.action_mailer.smtp_settings將設置轉發給ActionMailer::Base.smtp_settings

但是,主要區別在於前者是特定於環境的設置,而第二種是全局設置。

換句話說,您應該確保在適當的環境文件中設置config.action_mailer.smtp_settings以應用設置。例如,如果要使用生產中的設置,請在config/environments/production.rb文件中添加分配。同樣,如果要將設置應用於整個項目,請將它們設置爲config/application.rb

+1

我在'development.rb'中設置了開發模式的配置,但沒有轉發設置。這兩者似乎並不一樣 - 這就是我的問題所在。你的意思是這是一個錯誤? – andrasf

2

我有類似的問題,config.action_mailer.smtp_settings不起作用,但每個配置都是正確的。

最後我想通了,Rails擴展覆蓋了初始化階段的ActionMailer :: Base設置...因此請調查您的所有代碼和所有第三方代碼(!),擴展,模塊等應該是問題!

+0

什麼擴展名覆蓋它?我有類似的問題。 – Andrew