2010-10-18 77 views
8

我使用SendGrid發送在Heroku電子郵件...的Rails的ActionMailer與SendGrid

到目前爲止的問題是當它在Heroku上的偉大工程,我的本地主機失敗上。

現在我有SendGrig安裝位置,配置/爲setup_mail.rb:

ActionMailer::Base.smtp_settings = { 
    :address  => "smtp.sendgrid.net", 
    :port   => "25", 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => ENV['SENDGRID_DOMAIN'] 
} 

什麼是Heroku的/ SendGrid的方式,讓我以確保我郵寄的DEV工作。這個setup_mail.rb文件是一件好事嗎?它應該在env文件中嗎?任何其他想法?

感謝

回答

11

使用config/environments/[development.rb | production.rb],因爲上面提到的tfe聽起來像是它的路要走。只需將ActionMailer配置置於其中任一文件中,並將其更改爲適合開發環境。

您也可以使用您的Heroku憑據SendGrid通過發出以下命令:

Heroku的配置--long

這些憑據用於所有SendGrid認證(SMTP驗證,網站登錄查看統計等,API訪問)

- 喬

SendGrid

+2

似乎'heroku config --long'不再有效。 'heroku config:獲取SENDGRID_USERNAME'和'heroku config:get SENDGRID_PASSWORD'可以獲得相同的信息。 – 2013-06-27 21:44:37

+5

或簡單地''heroku配置'沒有參數 – 2013-08-14 18:29:30

4

只是爲了SENDGRID_USERNAMESENDGRID_PASSWORDSENDGRID_DOMAIN設置你的開發環境的環境變量。然後它會工作。

你可以從你的Heroku應用程序中獲得這些值。打開heroku控制檯並獲取ENV['SENDGRID_USERNAME']等的值。

或者只是在本地使用一組不同的SMTP設置。或者使用sendmail或其他東西。

+0

謝謝,「在本地使用一組不同的SMTP設置」,這正是我試圖學習如何做的。 Rails在跨環境中執行此設置的正確方法是什麼? – AnApprentice 2010-10-18 03:22:02

+0

我相信你可以在每個環境初始化文件('config/environments/foo.rb')中設置ActionMailer :: Base.smtp_settings。我不完全確定這裏的Rails Way;我有一段時間沒有用這種方式配置郵件。 – tfe 2010-10-18 09:03:04

+1

我用SendGrid在Heroku上運行了幾個應用程序,但我遇到了同樣的問題(希望在本地以及在Heroku上發送郵件)。我所做的只是自己去SendGrid並註冊一個帳戶。然後,我可以在應用程序中爲所有環境設置用戶名和密碼,並且這些憑據未鎖定在Heroku應用程序的「ENV」中。 – tfe 2010-10-18 09:05:00