【发布时间】:2015-12-19 13:01:14
【问题描述】:
我正在使用 Exchange Web Services Managed 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
}
}
【问题讨论】:
标签: c# exchangewebservices extended-properties