【发布时间】:2011-11-01 12:30:37
【问题描述】:
如何以最少的 EWS 调用从 Exchange 2010 获取所有电子邮件?
我们的邮箱有 50k+ 封电子邮件和 2k~ 个文件夹。我尝试遍历每个文件夹,但这需要几个小时才能获取我的所有电子邮件。我目前的方法是从邮箱中获取所有文件夹,然后制作一个搜索过滤器列表,基本上过滤所有父文件夹 id 为 n 的项目。
这是我目前所拥有的。
var allFolders = exchangeService.FindFolders(folderId,
new FolderView(int.MaxValue) {Traversal = FolderTraversal.Deep});
var searchFilterCollection = new List<SearchFilter>();
foreach(var folder in allFolders)
searchFilterCollection.Add(new SearchFilter.SearchFilterCollection(LogicalOperator.Or,
new SearchFilter.IsEqualTo(ItemSchema.ParentFolderId, folder.Id.ToString())));
var itemView = new ItemView(int.MaxValue)
{
PropertySet = PropertySet.FirstClassProperties
};
var findItems = exchangeService.FindItems(folderId,
new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection), itemView);
我收到的错误The property can not be used with this type of restriction.。
【问题讨论】:
-
哪一行触发了错误?
-
我使用
FindItems()的最后一行