我已经使用 Microsoft Exchange Server 2010 进行了一些研究和一些代码测试,以意识到在退回的电子邮件中,标题正在被删除。我提到的其中一篇文章是这样的:Detecting bolted messages by return-path header。
我遇到的问题是尝试从退回的电子邮件中检索自定义标头,但根据我的研究,这似乎是不可能的。上面文章中提到的另一个解决方案是使用返回路径地址。
但是,当我使用 Microsoft Outlook Web App 访问我的网络电子邮件并检查退回到我的地址的电子邮件时,我能够查看原始邮件标题。那么,是否可以使用 EWS 托管 API 来检索原始邮件标头?
原始消息头如下:
管理员诊断信息: 生成服务器:MXG001.domain.com email.that.do.not.exist.1234567890@gmail.com gmail-smtp-in.l.google.com ##SMTP# 原始邮件标题: 返回路径:sender@domain.com 收到:来自 IMSA(后缀)的 MXG001.domain.com(未知 [127.0.0.1]) 使用 ESMTP id 1484C26805C ; 2012 年 8 月 29 日星期三 20:07:56 +1000 (EST) 收到:来自 EZY106(未知 [10.32.8.141])由 MXG001.domain.com (后缀)与 ESMTP id 6F7B026805B 为 email.that.do.not.exist.1234567890@gmail.com;2012 年 8 月 29 日,星期三 20:07:55 +1000(美国东部标准时间) 回复:myemail@domain.com X-CustomHeader1:0E591306-9997-4E35-954E-F36A069AF8B4 X-CustomHeader2:1F80DCBF-2F93-49A4-90C0-00E79763B916 MIME 版本:1.0 发件人:域 sender@domain.com 发件人:myemail@domain.com 收件人:email.that.do.not.exist.1234567890@gmail.com 日期:2012 年 8 月 29 日,星期三 18:10:13 +0800 主题:测试电子邮件跟踪 3 内容类型:文本/html;charset="us-ascii" 内容传输编码:quoted-printable 消息 ID:20120829100755.6F7B026805B@MXG001.domain.com X-TM-AS-MML:没有 X-TM-AS-产品版本:IMSA-8.2.0.1520-6.8.0.1017-19146.000 X-TM-AS-结果:否--0.146-5.0-31-10 X-imss-scan-details: 否--0.146-5.0-31-10 X-TM-AS-User-Approved-Sender: 否 X-TMASE 版本:IMSA-8.2.0.1520-6.8.1017-19146.000 X-TMASE-结果:10--0.146400-5.000000 X-TMASE-MatchedRID:wjdoQEOKyrZ7ahiNncA4hJpaQZrxtVBsqS91SjnldFIi7hIFpWx7pqbF sETXF+9u5V8fgkZZSCU19vcvk7TH/S8xkUATmhC45BgEdUqqANSV8bCk1I9WfnXA+T8YcZkDP/i gW2j9KQ2dtSjAL+46o1q6LJohGEOtW5fzCBTKbRONes9LMglhgLejw9iqfGUKR0givuLhSAhBg2 NqmDTb6Q+gzceqIagHXcAUO5rYRMutSn//sy4xSbAVy0FQT/1xloKBPsyyeoXpAAWYDGUZn3OxN uYzUrAfNmDrdAkjVfe9KhpQKnl6nw==
我使用下面的代码编写一个客户端来访问 EWS,它也可以正常工作。所以我唯一的问题是是否可以检索原始邮件头?如果是这样,我该怎么做?谢谢!
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.Credentials = new WebCredentials(@"myUsername", "myPassword");
service.Url = new Uri("https://webmail.domain.com/ews/exchange.asmx");
Folder inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
SearchFilter sf = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "REPORT.IPM.Note.NDR");
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter[] { sf });
ItemView view = new ItemView(20);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, searchFilter, view);
foreach (EmailMessage item in findResults)
{
// Can process whatever is necessary here
}