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