1

我有以下问题。假设我有以下代码

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

但我不知道如何通过顶点代码访问这些信息。有什么想法吗?

  1. 第二个问题。如果消息已传递并且收件人转发了它,是否有可能使用 apex 代码对其进行监控?有人吗?
4

1 回答 1

0

你不能做这两件事。APEX 在 Salesforce 的服务器上运行,当您发送电子邮件时,它会离开该环境。只有在处理生成 webhook 的 API 时才能监控成功响应。

于 2014-02-04T14:39:46.947 回答