rails 邮件程序无法发送到 gmail;与发送网格一起工作

rails mailer failing to send to gmail; works with sendgrid

我有一个 rails 4 应用程序在生产中(多年),上周它突然停止向 gmail 成功发送邮件。

错误信息是:

E, [2016-04-09T17:16:49.293552 #14465] ERROR -- : 2016-04-09T17:16:49+0000: [Worker(delayed_job host:ip-10-18-148-31 pid:14465)] Job Class#email_sample_complete (id=292861) FAILED (5 prior attempts) with EOFError: end of file reached

配置(已经工作了一年/为了安全而隐藏了密码和域)是:

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :address        => "smtp.gmail.com",
  :port           => 587,
  :domain         => "system@mydomain.org",
  :authentication => :plain,
  :user_name      => "system@mydomain.org",
  :password       => "mypassword"
}

我手动测试了凭据并能够使用它们登录,所以这没有改变。

凭直觉,我更改了电子邮件服务器和 creds 以指向 sendgrid,这些电子邮件通过了。所以一切正常,除了与 gmail 的连接。

我们没有进行任何代码更改或部署。为了安全起见,我重新部署了一个已知版本的代码,该版本以前被认为是安全的,并重新启动了 Web 服务器和 delayed_job 以使所有内容都被拾取。不开心。

我 googled 错误消息,普遍的共识是这是由电子邮件服务器关闭引起的......所以我在接下来的几天里再次尝试了几次旧配置。还是不行。

在这里挠我的头。一个已知的工作配置突然停止工作,没有代码更改或 env 更改。 google 方面有什么变化吗?

Google 已阻止使用纯用户名和密码的 SMTP 身份验证。

是的,迁移到 SendGrid、AWS SES 等交易电子邮件传送服务将是一个很好的举措。

解决方案在配置中。

我将域名从....

:domain         => "system@mydomain.org",

到....

:domain         => "gmail.com",

并且 EOF 错误消失了。 Google 一定是他们方面进行了更改,要求域为 gmail.com。我想不出配置在一年多没有任何问题后突然停止工作的另一个原因。