11

我有一个添加了 Devise 的简单 Rails 3.2.7 应用程序,它部署到 Heroku 并添加了 Sendgrid。它在 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
}
4

1 回答 1

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
}
于 2013-04-25T19:55:54.107 回答