如何通过源代码监控salesforce发送的电子邮件的发送?

时间:2013-09-02 11:16:30

标签: email salesforce apex-code

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

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.第一个问题。如果消息真的被传递,我想找出使用​​顶点代码。 这里的文档说http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_sendemail_emailresult.htm

即使成功= true,也不意味着目标收件人收到了电子邮件,因为它可能已被垃圾邮件阻止程序退回或阻止。此外,即使邮件传输代理成功接受邮件传递,错误数组中仍可能存在与电子邮件中的各个地址相关的错误。

所以我一直试图通过顶点代码发送电子邮件并查找结果[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   &LT; _0vTJ000000000000000000000000000000000000000000000MSHRSY00W1-CKg3DShWC5xu24ccHFA@sfdc.net>   1 311.627583 421 4.4.0 [内部]此域名没有MX可以   到了这个时候

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

  1. 第二个问题。如果邮件已发送且收件人转发了邮件,是否有可能使用顶点代码进行监控?任何人?

1 个答案:

答案 0 :(得分:0)

你无法做到这两件事。 APEX在Salesforce的服务器上运行,当您发送电子邮件时,它会离开该环境。您可以监控成功响应的唯一时间是处理生成webhook的API。