当我发送一封电子邮件但没有收到时,我怎样才能找出问题的原因是什么?
我的应用程序使用 Apache commons-mail 库通过 SMTP 发送电子邮件。出于测试目的,我使用的是 gmail SMTP 服务器。(我们的生产应用程序使用我们网络上的内部服务器)。
在测试服务器上的一个案例中,我有一个批处理作业生成 5 封带附件的电子邮件。有些电子邮件已收到,有些则标记为已发送,但从未出现在我的收件箱中。似乎没有一种模式可以接收到哪些电子邮件,哪些邮件会默默消失。
发送和检查错误的代码如下所示:
final Mail mail = ...;
//The Mail class is our app's mail object, which provides data used to generate the MIME e-mail and record the results.
final MultiPartEmail email = ...;
try {
email.setSentDate(mail.getDateSent());
email.send();
}
catch (EmailException ee) {
success = false;
mail.setDateSent(null);
getLog().error("Mail not sent: ", ee);
if (ee.getMessage().indexOf("receiver address required") != -1) {
mail.setErrorMessage(ee.getMessage());
getLog().error(mail.toString());
}
}
在调试器中,我确定没有抛出异常。
我的第一个猜测是附件太大了;但是,据说 gmail 支持 25MB 的附件,而我最大的附件是 14.3 MB。在某些情况下,当我运行整批 5 封电子邮件时,附件最大的电子邮件会通过,而较小的则消失。