我写了代码发送电子邮件。它可以正常工作,但我的目标是:

当有人发送到不存在的电子邮件地址时,我想将结果记录为“ false”或“ fafer”等(以及电子邮件地址有效时,只需说“成功”)

我尝试了以下代码的两件事。

  1. 提供了非email字符串“ foo@!”

  2. 提供了不存在的电子邮件地址“ thisdoesnotexistignsdfkjsdf@gmail.com'

结果:

执行案例1导致代码进入 catch block 因此,在HTML页面上输出错误消息。

执行案例2导致代码返回 'ok sent!'

几分钟后,我收到电子邮件失败了。

我的猜测是sendemailresult对象的issuccess()对不存在的电子邮件地址检查并不真正负责。它只在乎电子邮件是发射的吗???

如果不存在电子邮件帐户,有什么办法可以记录,以便我可以在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