使用 EWS 查找所有对话项目,包括已发送的项目

Find all conversation items, including sent items, with EWS

在 Exchange 2010 中,引入了很棒的操作 FindConversation。但是,此操作只允许您指定一个文件夹来查找对话,因此当您使用 FindConversation 时,例如inbox-文件夹,您将无法获得自己发送的对话部分(因为它们位于 sentitems-文件夹中)。

为了缓解这种情况,我从 FindConversation- 操作中提取了所有独特的 conversationIds,并做了一个常规的 FindItem 和一个大的 Restriction-条款要求属于任何这些对话的项目。这给了我错误:The 属性 cannot be used with this type of restriction.

然后我要求每个对话中第一项的Extended Property 0x3013,这是其他类型的ConversationId(?),并使用与上述相同的方法。这确实有效!然而,这是非常缓慢的,并且几乎破坏了良好的最终用户体验,一个简单的 FindConversation-操作,然后是 GetItem-操作给了。

有没有比上述更好的方法来获取整个对话(包括用户自己的邮件)?

我最后取出了每个对话的 ConversationTopic(你在 FindConversation-操作中得到),并创建了一个大的 Rectriction 并在 sentitems-将这些主题中的任何一个作为自己的文件夹,并带有 Finditem-操作。然后当我得到回复时,我将每个项目映射到它们所属的对话。这样我就不用做2次FindItem操作了,而且速度非常快。