我写了代码来发送电子邮件。它工作正常,但我的目标是:
当有人发送到不存在的电子邮件地址时,我想将结果记录为“错误”或“失败”等(当电子邮件地址有效时,只需说'成功')
我用下面的代码尝试了两件事。
提供非电子邮件字符串'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();
}
答案 0 :(得分:2)
电子邮件(SMTP)是一种存储转发协议,在发送时,您无法确定目标电子邮件地址是不存在的,只有在邮件实际到达最终目的地后才能找到它服务器
答案 1 :(得分:0)
如果有办法找到电子邮件地址是否真的存在,垃圾邮件发送者可能会尝试暴力攻击 - 尝试每种可能的电子邮件组合并发送无限垃圾邮件:)
谢天谢地,这是不可能的。