使用EWS搜索整个邮箱

时间:2015-09-16 09:53:14

标签: email soap exchange-server exchangewebservices

TL; DR

我尝试使用EWS API对整个邮箱进行合理快速有效的搜索,以Exchange 2010为目标。这可能吗?

这个问题一直困扰着我。当使用使用EWS的第三方电子邮件客户端时,您可以告诉其他人也在努力解决这个问题。这些是我迄今为止尝试过的事情:

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

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

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

  4. 与上述相同,但会搜索所有系列文件夹。对于邮箱中邮件很少且邮箱数量很少但邮箱速度不够快的用户来说,这是可以的。

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

1 个答案:

答案 0 :(得分:1)

  1. Outlook为此目的创建了一个搜索文件夹(从2010年开始),称为AllItems Searchfolder http://blogs.msdn.com/b/webdav_101/archive/2015/05/03/ews-best-practices-allitems-folder.aspx。但它并非没有问题
  2. 主要问题是很多用户邮箱都是文件夹和项目的混乱,而且在2010年查询超过100000个项目的文件夹没有很好的解决方案(这比你想象的更常见)。搜索文件夹是静态查询的一个很好的选择,因为它们会在后台填充,但不会立即给您带来结果。即使是2013年的电子发现,也无法快速提供非常大的结果集。一些方法是让您的查询Async(这是大多数搜索文件等在Windows中工作的方式),您逐渐提供结果(例如从收件箱开始,因为这是最有可能给你点击然后带来的地方后者的其他结果)大多数用户将会接受并理解这种体验。否则,如果您需要特定的响应时间,一种方法是自己抓取并索引内容(这是可行的并且增加了实际价值,但需要付出代价)。搜索大量数据总是需要做出一些权衡。

    干杯 格伦