【问题标题】:Authentication Error sending gmail message via ActionMailer通过 ActionMailer 发送 gmail 消息的身份验证错误
【发布时间】:2018-07-25 16:00:22
【问题描述】:

我正在尝试使用 ActionMailer 生成基本电子邮件。我知道事情的设置是半正确的,因为我收到了一封来自 Gmail 的电子邮件,说一个不安全的应用程序试图登录我的帐户。正如其他人在this post 中所说的那样,我已经完成了。这些步骤是:

1) 在 Gmail 设置中启用安全性较低的应用设置。
2) 将域:从“mydomainname.com”更改为“gmail.com”3) 将身份验证从“普通”更改为 :login
4) 在 Gmail 设置中,启用 POP 和 IMAP。

这是我的邮件开发配置设置:
...config/environments/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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案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 文件时重新启动服务器。

    编辑:好吧,现在我感觉自己快疯了,因为当我再次尝试运行时,上述设置不起作用......

    【讨论】:

      【解决方案2】:

      此外,在开发中,您可以使用本地邮件接收器。

      其中一个是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 并在浏览器中运行 MailHog http://localhost:8025

      【讨论】:

        【解决方案3】:

        并不是真正解决 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 帐户启用了 2 因素身份验证,那么您将需要设置应用程序密码并使用该密码而不是您的常规密码。 或者,您可以使用另一个 ESP 发送电子邮件,方法是将上面的“smtp.gmail.com”替换为您的提供商的地址

        我使用 Sengrid 是因为他们的免费计划(每天 100 封电子邮件)现在对我来说已经足够了,而且我得到了许多有趣的分析。但是如果你需要更多的容量,我认为它们并不便宜。

        【讨论】:

        • 很高兴我不是唯一一个它回来的人。终于让它第二次消失了,但不知道我做了什么。如果它回来,我会尝试接下来的两步验证。感谢您在答案中包含官方文档。
        • AmazonSES 真的很便宜,如果部署在 EC2 中,可以免费发送 6 万封电子邮件。大多数电子邮件 SAAServices 也使用 AmazonSES。
        猜你喜欢
        • 2016-11-12
        • 2017-02-26
        • 2022-10-24
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 2019-11-10
        • 1970-01-01
        相关资源
        最近更新 更多