我有一个允许用户请求注册活动的应用程序。当一个邀请请求被提交时,控制器执行这段代码:
EventMailer.notify_admins(@user, subject, topic).deliver
该应用程序运行良好(开发、测试和生产),但几周前,通过测试和生产环境填写的邀请请求停止向管理员发送电子邮件。它在开发环境中仍然可以正常工作。当我检查测试环境日志文件时,我在其中看到以下内容:
Rendered event_mailer/notify_admins.html.erb (1.3ms)
Rendered event_mailer/notify_admins.text.erb (1.0ms)
Sent mail to xxxx@xxxxx.com (1529ms)
Date: Fri, 01 Mar 2013 20:45:00 +0000
From: xxxx@xxxxxxx.com
To: xxxx@xxxxx.com
Message-ID: <5131134cdd3aa_3cf96d18707060@xxxx-test.mail>
Subject: Invite request received from: John Doe
Mime-Version: 1.0
Content-Type: multipart/alternative;
boundary="--==_mimepart_5131134cc6832_3cf96d1870674a";
charset=UTF-8
Content-Transfer-Encoding: 7bit
----==_mimepart_5131134cc6832_3cf96d1870674a
Date: Fri, 01 Mar 2013 20:45:00 +0000
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <5131134cd7f78_3cf96d18706818@xxxx-test.mail>
Invite request received from:
First Name: John
Last Name: Doe
Email Address: john_doe@xxxx.com
http://test.xxxxx.com/users/109/edit
----==_mimepart_5131134cc6832_3cf96d1870674a
Date: Fri, 01 Mar 2 013 20:45:00 +0000
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <5131134cdb33d_3cf96d187069bd@dent-test.mail>
<p>Invite request received from: </p>
<p>First Name: John </p>
<p>Last Name: Doe </p>
<p>Email Address: john_doe@xxxxx.com </p>
http://test.xxxx.com/users/109/edit
<a href=""> Click here to manage request </a>
----==_mimepart_5131134cc6832_3cf96d1870674a--
Redirected to http://test.xxxxx.com/
Completed 302 Found in 3343ms (ActiveRecord: 99.8ms)
...但是没有收到电子邮件,当我查看邮件日志(已发送的电子邮件、Google 邮件)时,我在已发送的文件夹中看不到任何内容(尽管在开发环境中发送正常)
我使用谷歌应用程序作为我的邮件服务器,开发/测试/生产的代码完全相同。为了确保没有缓存资源,我还在测试和生产环境中预编译了资产并重新启动了 Apache 服务器。有任何想法吗?
环境
测试、开发和生产环境 smtp 设置部分相同:
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "xxxxxxx.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["MY_EMAIL_FROM"],
password: ENV["MY_EMAIL_FROM_PWD"]
}
当我在 TEST 和 PRODUCTION 上将 config.action_mailer.raise_delivery_errors 设置为 TRUE 时,我收到 500 错误。如果设置为 false,则根本不会发送电子邮件。