我正在使用 ActionMailer 从我托管在 Heroku 上的网站发送一封确认电子邮件。当我在 smtp_settings 中输入我的用户名和密码作为字符串时,它工作得非常好,但这显然是一个安全漏洞,因为它们在 Github 上供所有人查看。所以今天我更改了我的 gmail 密码并使用 Heroku 的配置来保存用户名和密码。我的 smtp 设置现在如下所示:
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings ={
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
user_name: "#{ENV['EMAIL_USER']}",
password: "#{ENV['EMAIL_PASS']}",
authentication: "plain",
enable_starttls_auto: true
}
只有每次我尝试发送邮件时,它都会给我一个“Net::SMTPAuthenticationError(535-5.7.8 用户名和密码不被接受”错误。我什至添加了 puts 以在控制台中显示配置设置的值:
puts "USERNAME : #{ENV['EMAIL_USER']}"
puts "PASSWORD : #{ENV['EMAIL_PASS']}"
在 Heroku 的日志中,它们表现得非常好。我阅读了另一篇关于 Gmail 由于可疑活动而阻止登录的帖子,但我没有收到此类警报。当我使用配置变量时它不起作用 - 将其更改回字符串使其在我的本地开发环境中工作。我在这里有点不知所措。有任何想法吗?