我有一个简单的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 = "[email protected]"
对于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 }