У меня есть система Java 1.7, которая отправляет электронные письма через ретранслятор SMTP
, используя Apache commons-email-1.0.jar. Я привык ловить и отслеживать действительные ошибки, такие как
SMTPAddressFailedException: 550 5.1.1 user unknown
.
Однако ретранслятор SMTP
недавно переключился с использования Exchange 2010 на Exchange 2016. С тех пор, как это было сделано, я больше не получаю никаких ошибок. Все мои электронные письма отправляются на ретранслятор, а затем они терпят неудачу, не предупреждая меня. Мне нужно понять, что могло измениться с этим обновлением, и исправить это так, чтобы я снова получал эти сообщения об ошибках.
Чтобы уточнить: я просто отправляю электронные письма. Нет проблем с отправкой электронных писем с действительными адресами, единственная проблема заключается в том, что он больше не сообщает мне, когда адрес является недействительным.
У меня есть блок try-catch вокруг моего htmlEmail.send()
, который должен отлавливать эти ошибки. В прошлом catch(EmailException e)
срабатывал, если был неверный адрес электронной почты. Не было никаких изменений кода, только изменение конфигурации для использования нового реле SMTP
. Проверяя людей-ретрансляторов, они говорят, что единственное, что было изменено, - это обновление с Exchange 2010 до Exchange 2016. Поскольку моя система использует Apache commons-email-1.0.jar, я попытался проверить совместимость этого, чтобы убедиться, что это имеет проблемы с Exchange 2016, но я не могу найти достаточно документации. Я также проверил брандмауэр, но там все выглядит правильно.
private boolean sEmail(){
HtmlEmail htmlEmail = null;
htmlEmail = new HtmlEmail();
htmlEmail.setHostName(mailHostname);
htmlEmail.addTo(emailAddress);
...
try{
...
htmlEmail.setFrom(fromAddress, fromName);
htmlEmail.setMsg(content);
htmlEmail.attach(attachment);
htmlEmail.send();
}catch(EmailException e){
LogService.error("Error!" + e);
}finally{
...
}
}
Я ожидаю получить сообщения об ошибках, подобные этому:
Error! Sending the Email to the following server failed : Relay.com:25
org.apache.commons.mail.EmailException: Sending the email to the
following server failed: Relay.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java)
at org.apache.commons.mail.Email.send(Email.Java)
at com.code.EmailSender.sEmail(Unknown Source)
...
Caused by:
javax.mail.SendFailedException: Invalid Address; nested exception is:
com.sun.mail.SMTPAddressFailedException: 550 5.1.1 User Unknown
...
Вместо этого я просто каждый раз получаю сообщение об успехе.
Со стороны реле они видят:
550 5.1.10 RESOLVER.ADR.RecipientNotFound; Recipient not found by SMTP address lookup...
Это не замечено моей системой, я никогда не узнаю об этом, пока не спрошу их.