使用 EWS 搜索整个邮箱

Searching the entire mailbox with EWS

TL;DR

我正在尝试使用 EWS API 以 Exchange 2010 为目标对整个邮箱进行相当快速和高效的搜索。这可能吗?


这个问题困扰了我一段时间。当使用使用 EWS 的第三方电子邮件客户端时,您可以看出其他人也在为这个主题而苦苦挣扎。这些是我到目前为止尝试过的东西:

  1. 为所有项目创建 SearchFolderTraversal="Deep",class IPM.Notemsgfolderroot 文件夹作为基础文件夹.对于拥有足够数量电子邮件的用户来说,这是不可持续的,因为此操作将立即受到限制,实质上是为该特定用户创建 DOS。

  2. 与上面相同,但添加了一个额外的 Rectriction,一次将 item:DateTimeReceived 限制为一周。我想当用户正在查看的邮件相对较新时,这可以正常工作,但如果是旧电子邮件,则无法使用。

  3. 查找所有用户的文件夹 ID,并使用 AQS-参数设置为用户提供的搜索查询并行搜索所有这些文件夹。这也会限制服务器。

  4. 同上,但依次搜索所有文件夹。这对于邮箱中邮件很少且文件夹很少的用户来说还可以,但对于邮箱较大的用户来说速度不够快。

是否有一种相当快速的方法来使用 EWS 搜索整个邮箱?我的目标是 Exchange 2010。

  1. Outlook 为此(从 2010 年开始)创建了一个名为 AllItems Searchfolder 的搜索文件夹 http://blogs.msdn.com/b/webdav_101/archive/2015/05/03/ews-best-practices-allitems-folder.aspx。但它并非没有问题

主要问题是很多用户邮箱都是一堆文件夹和项目,并且没有很好的解决方案来查询 2010 年超过 100000 项目的实时文件夹(这比你想象的更常见).搜索文件夹是静态查询的不错选择,因为它们会在后台填充,但不会立即为您提供结果。即使是 2013 年的 eDiscovery 也无法快速提供非常大的结果集。一些方法是使您的查询异步(无论如何,这是大多数搜索文件等在 windows 中工作的方式),您逐渐将结果带入其中(例如,从收件箱开始,因为这是最有可能给您的地方点击并稍后带来其他结果)大多数用户将接受并理解这种体验。否则,如果您需要特定的响应时间,一种方法是自己对内容进行爬网和索引(这是可行的并且增加了实际价值,但需要付出代价)。搜索大量数据总是需要您做出一些权衡。

干杯 格伦