Как обработать ошибку в сообщениях об обмене сообщениями.sendemail ()?

StackOverflow https://stackoverflow.com/questions/4190746

Вопрос

Я написал код для отправки электронной почты. Все работает нормально, но моя цель:

Когда кто-то отправляется на не существующий адрес электронной почты, я хочу войти в систему как «false» или «сбой» и т. Д. (И когда адрес электронной почты действителен, просто скажите «успех»)

Я пробовал 2 вещи с кодом ниже.

  1. Предоставлено не отображаемой строкой 'foo@!'

  2. Предоставлено несуществующий адрес электронной почты '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)-это протокол магазина и пересылки, во время отправки вы не можете сказать, что адрес электронной почты назначения не существует, вы можете найти это только после того, как сообщение на самом деле попадет на конечный сервер назначения.

Другие советы

Если бы был способ найти адрес электронной почты, независимо от того, действительно ли он существует или нет, спамер мог бы попробовать атаку грубой силы - пробуя все возможные комбинации электронной почты и отправка бесконечных спамов :)

Слава Богу, это невозможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top