我正在使用 Exchange Web Services Managed API 2.2 来监控用户的收件箱,并且需要确定电子邮件是新邮件、回复邮件还是转发邮件。
我看过关于 SO 的各种文章,例如如何注意邮件是否为转发邮件?有没有办法使用 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
}
}