我有一个rails 4应用程序正在生产(多年)突然上周它停止成功发送邮件到gmail。
错误消息是:
E,[2016-04-09T17:16:49.293552#14465]错误 - : 2016-04-09T17:16:49 + 0000:[工人(delayed_job主持人:ip-10-18-148-31 pid:14465)]工作类#email_sample_complete(id = 292861)失败(5 先前的尝试)与EOFError:达到文件结尾
配置(已经工作了一年/密码和域名为安全隐藏)是:
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"
}
我手动测试了凭据,并且能够使用它们登录,因此没有更改。
在预感中,我将电子邮件服务器和信用卡更改为指向sendgrid,这些电子邮件已通过。所以一切都有效,除了与gmail的连接。
我们没有进行任何代码更改或部署。为了安全起见,我重新部署了以前已知安全的已知代码版本,并重新启动了Web服务器和delayed_job以使所有内容都被选中。没有快乐。
我搜索了错误消息,并且普遍的共识是,这是由电子邮件服务器关闭引起的...所以我在接下来的几天再次尝试了旧配置几次。仍然没有工作。
在这里抓我的头。一个已知的工作配置突然停止工作,没有代码更改或环境更改。谷歌方面有什么变化吗?
答案 0 :(得分:1)
Google已使用普通用户名和密码阻止了SMTP身份验证。
是的,转移到像SendGrid这样的交易电子邮件传递服务,AWS SES将是一个很好的举措。
答案 1 :(得分:1)
解决方案在配置中。
我从....改变了域名
:domain => "system@mydomain.org",
到....
:domain => "gmail.com",
EOF错误消失了。谷歌必须做出改变,要求域名为gmail.com。我无法想到另一个原因,为什么配置突然停止工作超过一年没有问题。