0

我正在尝试使用 Devise 和 SendGrid 在我的 Rails 应用程序中设置活动邮件功能,以便用户在注册时可以收到确认电子邮件并可以请求忘记密码链接。当我部署到 Heroku 并尝试注册时,点击“注册”时出现错误。在 Heroku 日志中,我可以看到有如下错误:

Completed 500 Internal Server Error in 547ms (ActiveRecord: 8.1ms)
Net::SMTPAuthenticationError (535 Authentication failed: Bad username / password

这可能与我拥有配置文件的方式有关,但我无法确定。任何帮助将不胜感激!这是我的文件。

配置/应用程序.yml

production:
  SECRET_KEY_BASE: <%= ENV["SECRET_KEY_BASE"] %>

development:
 GMAIL_USERNAME: scott.ian.munro@gmail.com
 GMAIL_PASSWORD: password
 SENDGRID_USERNAME: app115625999@heroku.com
 SENDGRID_PASSWORD: password

test:
 GMAIL_USERNAME: scott.ian.munro@gmail.com
 GMAIL_PASSWORD: password
 SENDGRID_USERNAME: app115625999@heroku.com
 SENDGRID_PASSWORD: password

production:
 GMAIL_USERNAME: scott.ian.munro@gmail.com
 GMAIL_PASSWORD: password
 SENDGRID_USERNAME: app115625999@heroku.com
 SENDGRID_PASSWORD: password

我正在使用figarogem 来管理我的环境变量。

4

2 回答 2

1

您的问题似乎是您引用的是GMAIL_USERNAMEandGMAIL_PASSWORD而不是SENDGRID_USERNAMEand SENDGRID_PASSWORD,并且您仍在引用 Gmail SMTP 服务器和端口。

假设您使用的是这个 gem:https://github.com/stephenb/sendgrid,这应该可以为您的生产配置文件解决问题:

config.action_mailer.smtp_settings = {
   address: "smtp.sendgrid.com",
   port: 25,
   domain: "heroku.com",
   authentication: :plain,
   user_name: ENV["SENDGRID_USERNAME"],
   password: ENV["SENDGRID_PASSWORD"],
}

更新:根据您使用figarogem 的评论,请确保运行将ENV变量添加到 Heroku 的 rake 任务: rake figaro:heroku

于 2019-02-13T20:27:21.187 回答
0

我也使用更多参数:

ActionMailer::Base.smtp_settings = { . . . enable_starttls_auto:真,openssl_verify_mode:“无”}

:)

于 2019-02-14T18:53:01.737 回答