我有以下问题。假设我有以下代码
public class MessageMaker {
public static void helloMessage() {
System.debug( 'Entry point' );
Case c = new Case();
insert c;
EmailMessage e = new EmailMessage();
System.debug( 'EmailMessage created' );
e.parentid = c.id;
// Set to draft status.
// This status is required
// for sendEmailMessage().
e.Status = '5';
e.TextBody =
'Sample email message.';
e.Subject = 'Apex sample';
e.ToAddress = 'my@mail.com';
insert e;
List<Messaging.SendEmailResult>
results =
Messaging.sendEmailMessage(new ID[]
{ e.id });
System.debug(results.size());
System.debug(results[0].success);
System.debug(results[0].getErrors().size());
System.assertEquals(1, results.size());
System.assertEquals(true, results[0].success);
}
}
1.第一个问题。我想使用 apex 代码找出消息是否真的被传递。这里的文档说http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_sendemail_emailresult.htm
即使success = true,也并不意味着预期的收件人收到了电子邮件,因为它可能已被垃圾邮件拦截器退回或阻止。此外,即使邮件被邮件传输代理成功接受以进行投递,与邮件中的各个地址相关的错误数组中仍然可能存在错误。
所以我一直在尝试通过 apex 代码发送电子邮件并查找 results[0].success。看起来就像文档中描述的那样,所以即使电子邮件地址不正确,成功也是如此。
我也尝试通过电子邮件日志手动检查这个http://eu2.salesforce.com/help/doc/en/email_logs.htm
我在结果日志中发现了以下行,关于我的电子邮件发送到了错误的地址
9/2/2013 9:36 66/FC-09306-20B54225 T julfy@i.ia julfy=i.ua__0-6uvic1ltvun1nf@95mngihd2hpe0w.b-ysubea0.bl.bnc.salesforce.com 1434 005b0000000J7bm <_0vTJ000000000000000000000000000000000000000000000MSHRSY00W1-CKg3DShWC5xu24ccHFA@sfdc .net> 1 311.627583 421 4.4.0 [内部] 目前无法访问此域的 MX
但我不知道如何通过顶点代码访问这些信息。有什么想法吗?
- 第二个问题。如果消息已传递并且收件人转发了它,是否有可能使用 apex 代码对其进行监控?有人吗?