EWS。只在邮件正文中搜索 250个结果

问题描述 投票:0回答:1

我目前在C#中的Exchange网络服务中遇到了一个问题,我试图循环浏览超过3个月的邮件,但我只得到250封邮件。在文件夹中,有超过80.000封邮件,所以这不是正确的计数。

经过查找问题,我现在知道服务每页只给我250个结果。但是TotalCount也是250,所以我不能用分页,因为没有第二页。如果没有正文过滤器,它可以工作,我得到的结果是70.000封邮件,这是正确的。有谁遇到过同样的问题,可以帮助我吗?

目前的程序只是使用2个过滤器与SearchFilter And操作符,并将结果升序排列,这是我目前获取邮件的代码。

Folder folder; // folder from loop
DateTime dateStart; // = today - 3 months

SearchFilter.SearchFilterCollection filter = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
filter.Add(new SearchFilter.IsLessThanOrEqualTo(EmailMessageSchema.DateTimeReceived, dateStart));
filter.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "test"));

ItemView view = new ItemView(1000, 0, OffsetBasePoint.Beginning);
// Get oldest first
view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.DateTimeReceived);
view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
view.Traversal = ItemTraversal.Shallow;

FindItemsResults<Item> findResults = exchangeService.FindItems(folder.Id, filter, view);

findResults.TotalCount() // = 250

我将很高兴得到一个解决方案,谢谢你的帮助:)

c# exchange-server exchangewebservices
1个回答
2
投票

我相信你现在已经发现了这个问题,但这是由于EWS节流。 虽然这可以改变,但不建议这样做。 我发现唯一的解决方法是将项目移动到另一个文件夹,并继续重新运行逻辑。 这里有一个关于EWS节流的信息链接,也是确定你当前策略的方法-------。https:/docs.microsoft.comen-usexchangeclient-developerexchange-web-servicesews-throttling-in-exchange。.

© www.soinside.com 2019 - 2024. All rights reserved.