我使用Exchange Web服务托管API 2.2来监视用户收件箱,并需要确定电子邮件是新项目,回复还是转发邮件.
我已经看过关于SO的各种文章,例如how to notice if a mail is a forwarded mail?和Is there a way to determine if a email is a reply/response using ews c#?,它们都有助于他们的特定情况,但我仍然无法弄清楚如何区分回复和转发的项目.
在第一篇文章中,每次添加额外的5个字节(转发或回复),所以我不知道最后一个动作是什么.
第二篇文章建议使用InReplyTo,但是当我检查转发电子邮件的属性时,它包含原始发件人的电子邮件地址(非空).
我见过其他文章,如this或this,建议使用扩展属性来检查PR_ICON_INDEX,PR_LAST_VERB_EXECUTED和PR_LAST_VERB_EXECUTION_TIME中的值.
我的代码如下所示,但从不返回lastVerbExecuted的值
var lastVerbExecutedProperty = new ExtendedPropertyDeFinition(4225,MapiPropertyType.Integer); var response = service.BindToItems(newMails,new PropertySet(BasePropertySet.IdOnly,lastVerbExecutedProperty)); var items = response.Select(itemResponse => itemResponse.Item); foreach (var item in items) { object lastVerb; if (item.TryGetProperty(lastVerbExecutedProperty,out lastVerb)) { // do something } }
解决方法
PR_ICON_INDEX,PR_LAST_VERB_EXECUTED和PR_LAST_VERB_EXECUTION_TIME仅用于告诉您收件人是否对其收件箱中的邮件采取了操作.例如,如果用户已在其收件箱中回复或转发了邮件,则会在其收件箱中的邮件中设置这些属性.在响应或转发这些属性的消息将不会被设置.我建议您使用In-Reply-To Transport标头,该标头应该在任何回复或转发的消息上设置,这应该包含回复或转发的消息的因特网消息ID.
FindItemsResults<Item> firs = service.FindItems(WellKNownFolderName.InBox,new ItemView(10)); PropertySet firsPropSet = new PropertySet(BasePropertySet.FirstClassproperties); ExtendedPropertyDeFinition PR_TRANSPORT_MESSAGE_HEADERS = new ExtendedPropertyDeFinition(0x007D,MapiPropertyType.String); firsPropSet.Add(PR_TRANSPORT_MESSAGE_HEADERS); service.LoadPropertiesForItems(firs.Items,firsPropSet); foreach (Item itItem in firs) { Object TransportHeaderValue = null; if(itItem.TryGetProperty(PR_TRANSPORT_MESSAGE_HEADERS,out TransportHeaderValue)) { string[] stringSeparators = new string[] { "\r\n" }; String[] taArray = TransportHeaderValue.ToString().Split(stringSeparators,StringSplitOptions.None); for (Int32 txCount = 0; txCount < taArray.Length; txCount++) { if (taArray[txCount].Length > 12) { if (taArray[txCount].Substring(0,12).ToLower() == "in-reply-to:") { String OriginalId = taArray[txCount].Substring(13); Console.WriteLine(OriginalId); } } } } }
除了在另一个链接中讨论的主题前缀之外,我不知道将区分回复或转发的任何其他礼仪.
干杯狭谷
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。