gpt4 book ai didi

ruby-on-rails - 发送邮件时不接受用户名和密码 (Heroku)

转载 作者:行者123 更新时间:2023-12-04 07:30:03 25 4
gpt4 key购买 nike

我正在使用 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 Username and Password not accepted)”错误。我什至添加了 puts 以在控制台中显示配置设置的值:

puts "USERNAME : #{ENV['EMAIL_USER']}"
puts "PASSWORD : #{ENV['EMAIL_PASS']}"

并且在 Heroku 的日志中,它们完全正常。我阅读了另一篇关于 Gmail 由于可疑事件而阻止登录的帖子,但我没有收到此类警报。当我使用配置变量时它只是不起作用 - 将它改回字符串使其在我的本地开发环境中工作。我在这里有点不知所措。有什么想法吗?

最佳答案

我收到了您显示的 SMTPAuth 错误消息,并且我有一些建议:

首先 - 这是适用于我的生产应用程序的配置:

  config.action_mailer.default_url_options = { :host => 'WWW.MYDOMAIN.COM' }
config.action_mailer.raise_delivery_errors = true;
config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "MYDOMAIN.COM",
:user_name => ENV["MAILER_USER_NAME"],
:password => ENV["MAILER_PASSWORD"],
:from => 'SALES@MYDOMAIN.COM',
:authentication => 'plain',
:enable_starttls_auto => true
}

所有 MYDOMAIN 内容都是我的实际凭据。

其次 - 令我震惊的是使用由 Linux 解释为 BASH 命令的 token - 所以这是一个示例密码:

ANEXAMPLEPA$$0RD

现在,当您在 Heroku 或您自己的 UNIX 终端上导出它时 - 您必须用单引号将密码括起来,以便按字面意义解释字符串,如下所示:

'ANEXAMPLEPA$$0RD'

如果您不这样做 - 您使用 export PASSWORD=PWD 或 heroku config:add KEY=VALUE 输入的密码实际上会删除其中一些特殊字符(UNIX 将 $1 和 $2 等作为变量的占位符,当您链式命令 - 结果证明这是我的问题)。

因此请确保,如果您使用的密码足够安全,密码的任何组合都不会意外地被解释为 UNIX 级命令。 export FOO=BAR 和 heroku config:add FOO=BAR 都将无错误返回,您会认为您的密码设置正确。一个小时后,您将检查以确保密码正确无误,并且您会注意到发生了一些插值。

第三 - 与 SO 和个人博客上关于 :domain => 键不必要甚至会导致发送失败的许多帖子相反,我发现它在这个元素上工作得很好。

关于ruby-on-rails - 发送邮件时不接受用户名和密码 (Heroku),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18031031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com