我目前在C#中遇到了交换Web服务的问题。 我试图遍历3个月以上的邮件,但我只收到250封邮件。该文件夹中有80.000多封邮件,因此计数不正确。
搜索问题后,我现在知道该服务每页只给我250个结果。但是TotalCount也为250,因此我无法进行分页,因为没有第二页。没有主体过滤器,它会起作用,我会收到70.000封邮件,这是正确的。有谁遇到过同样的问题并且可以帮助我吗?
当前,程序仅使用带有SearchFilter And运算符的2个过滤器,并将结果递增。 这是我当前获取邮件的代码:
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
我将为解决方案感到高兴,感谢您的帮助:)
答案 0 :(得分:2)
确定您现在已经弄清楚了,但这是由于EWS节流造成的。虽然可以更改,但不建议这样做。我发现的唯一解决方法是将项目移动到另一个文件夹并保持重新运行的逻辑。这是指向EWS节流信息的链接,也是确定当前策略的一种方法-https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/ews-throttling-in-exchange。