使用我的Rails站點,當我嘗試通過GMail發送郵件時,它完美地工作。但是,當我試圖通過MandrillApp發送它,它提供了以下錯誤(RController.create是在傳遞命令調用):Rails Mailer Net :: SMTPServerBusy
Net::SMTPServerBusy in RController#create
454 4.7.1 <[email protected]>: Relay access denied
這裏是我的配置/環境/ development.rb文件:
# ActionMailer Config
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.default :charset => "utf-8"
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
# config.action_mailer.smtp_settings = {
# :address => "smtp.gmail.com",
# :port => 587,
# :domain => 'gmail.com',
# :user_name => '[email protected]',
# :password => 'password',
# :authentication => 'plain',
# :enable_starttls_auto => true }
config.action_mailer.smtp_settings = {
:address => "smtp.mandrillapp.com",
:port => 587,
:user_name => ENV["EMAIL"],
:password => ENV["PASSWORD"]
}
如上所述,代碼無效 - 我沒有收到電子郵件,也沒有彈出錯誤消息。如果我轉而從GMail發送它,我幾乎立即收到一封電子郵件。我從來沒有與Mandrill合作過,所以任何幫助,將不勝感激。
謝謝你爲我工作。你應該接受你自己的答案。我不得不像''EMAIL''那樣去掉'ENV'和'[]''。 – LearningRoR
你能澄清你的解決方案嗎?我目前在我的smtp_settings - :password => ENV ['MANDRILL_API_KEY']中有這一行。根據你的解決方案,這條線應該如何讀取? – ajporterfield
如果你將MANDRILL_API_KEY定義爲一個程序變量而不是環境變量,那麼你只需要:'password => MANDRILL_API_KEY',而不是'password => ENV ['MANDRILL_API_KEY']'。環境變量更安全,因爲您的API密鑰將存儲在您的計算機/服務器上,而不是存儲在您的站點中(基本上,有人可以獲取您的代碼,仍然無法獲取您的密鑰),但是一個普通變量更容易實現 - 取決於你對安全性的擔心(儘管正確地說,你應該做一個環境變量)。 – camdroid