2013-04-25 53 views
8

我有一个简单的Rails 3.2.7应用程序Devise添加到部署到添加了Sendgrid的Heroku。它适用于heroku的所有功能,除非需要执行需要发送电子邮件的密码检索。从我已阅读的所有帖子中,我怀疑我以某种方式错误地设置邮件参数。任何建议表示赞赏。如何在Rails中用Heroku和Sendgrid配置Devise电子邮件?

对于配置/环境/ production.rb我加入

config.action_mailer.default_url_options = { :host => 'smtp.sendgrid.net'} 

用于配置/初始化/ devise.rb我加入

config.mailer_sender = "[email protected]" 

和用于配置/ environments.rb我加入

ActionMailer::Base.smtp_settings = { 
:address  => 'smtp.sendgrid.net', 
:port   => '587', 
:authentication => :plain, 
:user_name  => ENV['SENDGRID_USERNAME'], 
:password  => ENV['SENDGRID_PASSWORD'], 
:domain   => 'heroku.com', 
:enable_starttls_auto => true 
} 

回答

8

所以,你的问题是你引用了错误的环境变量。 Heroku将您的SendGrid凭据存储在ENV['SENDGRID_USERNAME']ENV['SENDGRID_PASSWORD']中。您正在使用您的实际用户名和密码作为关键名称。

这将工作:

ActionMailer::Base.smtp_settings = { 
    :address  => 'smtp.sendgrid.net', 
    :port   => '587', 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => 'heroku.com', 
    :enable_starttls_auto => true 
} 
+1

感谢Swift-它的作品! – user2284821 2013-04-25 20:58:32

相关问题