2014-07-18 37 views
2

我在config/environments/production.rb使用Heroku + SendGrid時,是否需要提供「發件人」電子郵件地址?

config.action_mailer.default_url_options = { host: "myapp.heroku.com" } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :addresses   => 'smtp.sendgrid.net', 
    :port     => '587', 
    :authentication  => :plain, 
    :user_name   => ENV['SENDGRID_USERNAME'], 
    :password    => ENV['SENDGRID_PASSWORD'], 
    :domain    => 'heroku.com', 
    :enable_starttls_auto => true 
    } 

然而,標準的設置,我遇到了以下錯誤嘗試發送郵件:

ArgumentError: An SMTP From address is required to send a message. Set the message smtp_envelope_from, return_path, sender, or from address.

然後我用我在我的Heroku上的郵箱嘗試附加頁,即app######@heroku.com,但現在我得到了

Errno::ECONNREFUSED: Connection refused - connect(2)

那麼我需要從郵件中指定一個嗎?如果是的話,我應該使用哪一個?

回答

7

是的,你需要設置一個地址。所有電子郵件都需要指定的地址。

:from => "[email protected]_domain.com" 

這需要在您的_mailer.rb文件中設置。您也可以在initiallizer中將其設置爲gloablly,但它必須始終在your_mailer.rb文件中以及每個郵件方法本身內引用。

您應該將:域更改爲您控制的域。但是如果你使用Heroku,你的應用程序的地址不是yourapp.herokuapp.com而不是yourapp.heroku.com?

+0

你的意思是我要註冊一個Gmail帳戶,並使用它作爲電子郵件的例子嗎?但如果是這樣,那我該如何提供gmail用戶名和密碼? – Heisenberg

0

您可以在郵件文件中設置發件人地址。

例如,如果你有通知新的活動的私人郵件在您的網站admin_mailer.rb,它看起來是這樣的:

def new_customer_trial(customer_object) 
    @new_customer = customer_object 
    mail :to => "[email protected]_email.com", :subject => "New Customer Trial", :from => "'My Site Notifications' <[email protected]_site.com>" 
    end 

而且你發送的郵件從控制器:

AdminMailer.new_customer_trial(customer_object) 

或延遲工作:

AdminMailer.delay.new_customer_trial(customer_object) 
9

production.rb文件試試這個代碼:

config.action_mailer.default_options = { from: "[email protected]" } 
+1

作品。謝謝! –

相關問題