如何在Rails中使用Heroku和Sendgrid配置Devise电子邮件?

我有一个简单的Rails 3.2.7应用程序,添加了Devise,并添加了Sendgrid部署到Heroku.它在heroku上工作正常,除非需要进行密码检索,需要发送电子邮件.从我读过的所有帖子中我怀疑我以某种方式错误地设置了邮件参数.任何建议表示赞赏.

对于config / environments / production.rb,我添加

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

添加了config / initializers / devise.rb

config.mailer_sender = "mail-to-send@from.com"

对于config / 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
}

解决方法

所以,你的问题是你引用了错误的环境变量. Heroku将您的SendGrid凭证存储在ENV [‘SENDGRID_USERNAME’]和ENV [‘SENDGRID_PASSWORD’]中.您使用实际的用户名和密码作为密钥名称.

这将有效:

ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',:enable_starttls_auto => true
}

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...