gpt4 book ai didi

error-handling - 如何处理 Messaging.sendEmail() 中的错误?

转载 作者:行者123 更新时间:2023-12-03 07:46:25 25 4
gpt4 key购买 nike

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

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

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

  • 提供了非电子邮件字符串 'foo@!'
  • 提供了不存在的电子邮件地址“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) 是一种存储转发协议(protocol),在发送时,您无法判断目标电子邮件地址不存在,只有在邮件真正到达最终目标服务器时才能发现。

    关于error-handling - 如何处理 Messaging.sendEmail() 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190746/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com