我正在尝试使用ActionMailer生成基本电子邮件。我知道事情设置是半正确的,因为我收到一封来自Gmail的电子邮件,说不安全的应用程序试图登录我的帐户。我和其他人在this post中所说的那样做了。这些步骤是:
1)在Gmail设置中启用了安全性较低的应用设置
2)更改域名:" gmail.com"来自" mydomainname.com"
3)更改了" plain"至:登录
4)在Gmail设置中,启用了POP和IMAP。
这是我的邮件开发配置设置:
的 ...配置/环境/ development.rb
config.action_mailer.raise_delivery_errors = true
#change mail delivery to smtp for Gmail addresses.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "gmail.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
我甚至将环境变量设置为好男孩。即使我对值进行硬编码,错误仍然存在。
我得到的例外是:
Net::SMTPAuthenticationError
534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbtj
答案 0 :(得分:1)
在我最终获得设置之前,它正在解决这个问题:
config.action_mailer.raise_delivery_errors = true
#change mail delivery to smtp for Gmail addresses.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "mydomainname.com",
authentication: "login",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
但真正的问题是确保并重新启动服务器,每次更改上面的 ... config / environments / development.rb 文件。
编辑:嗯,现在我觉得我发疯了,因为当我再次尝试再次运行时,上述设置无效...
答案 1 :(得分:1)
此外,在开发过程中,您可以使用本地邮件捕获程序。
其中一个是MailHog,它与gmail类似。
<强>安装强>
brew update && brew install mailhog
<强> development.rb 强>
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
在终端输入MailHog
和浏览器http://localhost:8025
答案 2 :(得分:1)
不是Gmail配置问题的真正解决方案,而是另一种选择。我有同样的问题并解决了它。问题最终再次出现。我不确定我是否更改了某些内容,或者只是Gmail不喜欢不太安全的应用程序并阻止电子邮件,即使您正确配置了所有内容。
我读过其他人使用两步验证解决了问题(https://stackoverflow.com/a/48300220/3372172),但从未尝试过。
我终于改为另一个ESP(就像Rails似乎在他们的指南中推荐的那样):http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration-for-gmail
注意:截至2014年7月15日,Google增加了其安全措施,现在阻止其认为不太安全的应用程序的尝试。您可以在此处更改您的Gmail设置以允许尝试。如果您的Gmail帐户启用了双因素身份验证,那么您需要设置应用密码并使用该密码而不是常规密码。 或者,您可以使用其他ESP通过将上面的“smtp.gmail.com”替换为您的提供商地址来发送电子邮件。
我正在使用Sengrid,因为他们的免费计划(每天100封电子邮件)对我来说已经足够了,我得到了许多有趣的分析。但如果你需要更多的音量,我认为它们并不便宜。