Как обработать ошибку в сообщениях об обмене сообщениями.sendemail ()?
-
10-10-2019 - |
Вопрос
Я написал код для отправки электронной почты. Все работает нормально, но моя цель:
Когда кто-то отправляется на не существующий адрес электронной почты, я хочу войти в систему как «false» или «сбой» и т. Д. (И когда адрес электронной почты действителен, просто скажите «успех»)
Я пробовал 2 вещи с кодом ниже.
Предоставлено не отображаемой строкой 'foo@!'
Предоставлено несуществующий адрес электронной почты 'thisoesnotexistignsdfkjsdf@gmail.com'
результат:
Выполнить дело 1 заставило код войти в catch block
Таким образом, вывод сообщения об ошибке на странице HTML, которая ожидается.
Выполнить дело 2 привели к возвращению кода 'ok sent!'
И через несколько минут я получил электронное письмо, что доставка не удалась.
Я предполагаю, что issuccess () SendEmailResult Object не несет на самом деле ответственность за несуществующую проверку адреса электронной почты. Это заботится только о том, стреляется из электронной почты ???
Есть ли способ войти в систему, если учетная запись электронной почты не существует, поэтому я могу войти в этот случай в моем коде Apex?
try {
Messaging.SendEmailResult[] resultMail = Messaging.sendEmail(new
Messaging.SingleEmailMessage[] { mail });
resultMail[0].getErrors();
//display success or error message
if (resultMail[0].isSuccess()) {
response = 'ok sent!';
} else {
response = resultMail[0].getErrors().get(0).getMessage();
}
//log
boolean isSuccess = resultMail[0].isSuccess();
Integer out = EmailLogger.logEmailSent(this, isSuccess);
} catch (System.EmailException ex) {
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Решение
Электронная почта (SMTP)-это протокол магазина и пересылки, во время отправки вы не можете сказать, что адрес электронной почты назначения не существует, вы можете найти это только после того, как сообщение на самом деле попадет на конечный сервер назначения.
Другие советы
Если бы был способ найти адрес электронной почты, независимо от того, действительно ли он существует или нет, спамер мог бы попробовать атаку грубой силы - пробуя все возможные комбинации электронной почты и отправка бесконечных спамов :)
Слава Богу, это невозможно.