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

时间:2013-04-25 19:12:43

标签: heroku devise ruby-on-rails-3.2 sendgrid

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

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

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

for 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
}

1 个答案:

答案 0 :(得分: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
}