2012-08-01 52 views
2

我想在Heroku上從我的Rails應用程序發送電子郵件。 由於Heroku不支持SMTP,我使用外部SMTP服務器。使用外部SMTP在Heroku上發送電子郵件

config/environments/production.rb有以下幾行。

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :address => 'mydomain.com', 
    :port => 587, 
    :user_name => "myusername", 
    :password => "password", 
    :authentication => :plain, 
    :enable_starttls_auto => true, 
    :openssl_verify_mode => 'none' 
} 

當我從「heroku運行控制檯」發送電子郵件,它工作正常。但它不會從網站發送電子郵件。奇怪的是,「heroku日誌 - 尾巴」顯示「發送郵件...」。其實這封電子郵件沒有發送。

有沒有人有任何關於這個問題的想法?

謝謝。

山姆香港

回答

3

有用戶在config/enviornment.rb

ActionMailer::Base.smtp_settings = { 
:address => 'mydomain.com', 
:port => 587, 
:user_name => "myusername", 
:password => "password", 
:authentication => :plain, 
:enable_starttls_auto => true, 
:openssl_verify_mode => 'none' 
} 
+0

This Works!奇怪... Heroku不同地處理production.rb和environment.rb。非常感謝你。 – 2012-08-01 16:38:13

1

如果它顯示爲郵件的發送,我會認爲這是在您的郵件服務器可能防止Heroku的IP範圍繼電器的配置問題 - 這是最奇怪但如果它的工作原理通過的Heroku控制檯而不是通過你的應用程序

您是否想過嘗試使用SendGrid Heroku插件來緩解與您自己的郵件服務器有關的任何問題?

+0

好的建議。我會用它來處理少量的電子郵件。 – 2012-08-01 16:38:44

3

你的配置是正確的嘗試這樣做。但是你必須把它放在正確的環境文件中。在Heroku部署的情況下,它應該是'生產'。控制檯的工作原理是因爲它使用「開發」作爲環境。所以把下面的代碼放在config/environment/production.rb中

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :address => 'mydomain.com', 
    :port => 587, 
    :user_name => "myusername", 
    :password => "password", 
    :authentication => :plain, 
    :enable_starttls_auto => true, 
    :openssl_verify_mode => 'none' 
} 

希望它解決了你的問題。