我有一个简单的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
}
答案 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
}