身份验证错误通过ActionMailer发送gmail消息

时间:2018-02-14 23:46:38

标签: ruby-on-rails

我正在尝试使用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

3 个答案:

答案 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

中运行MailHog

答案 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封电子邮件)对我来说已经足够了,我得到了许多有趣的分析。但如果你需要更多的音量,我认为它们并不便宜。