Электронная почта, отправленная с помощью обычной почты, иногда не принимается. Как я могу устранить неполадки?
Когда я отправляю электронное письмо, а оно не получено, как я могу выяснить, в чем причина проблемы?
Мое приложение отправляет электронные письма через SMTP с помощью библиотеки Apache commons-mail. В целях тестирования я использую SMTP-сервер gmail. (Наше производственное приложение использует внутренний сервер в нашей сети).
В одном случае на тестовом сервере у меня есть пакетное задание, которое генерирует 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 поддерживает вложения 25 МБ, а мое самое большое вложение - 14,3 МБ. В некоторых случаях, когда я запускаю всю партию из 5 электронных писем, электронная почта с самым большим вложением проходит, а меньшие исчезают.