C# 循环浏览文件夹中的每封电子邮件时设置封顶
我在一个包含26000封电子邮件的文件夹中循环浏览每封电子邮件。当我的程序点击电子邮件6000(基于计数器)时,它结束。为什么它不在每封邮件中循环C# 循环浏览文件夹中的每封电子邮件时设置封顶,c#,exchange-server,exchangewebservices,C#,Exchange Server,Exchangewebservices,我在一个包含26000封电子邮件的文件夹中循环浏览每封电子邮件。当我的程序点击电子邮件6000(基于计数器)时,它结束。为什么它不在每封邮件中循环 int offset = 0; int pageSize = 1000; bool more = true; ItemView view = new ItemView(pageSize, offset,OffsetBasePoint.Beginning); view.PropertySet = PropertySet.FirstClassProper
int offset = 0;
int pageSize = 1000;
bool more = true;
ItemView view = new ItemView(pageSize, offset,OffsetBasePoint.Beginning);
view.PropertySet = PropertySet.FirstClassProperties;
FindItemsResults<Item> findResults = exchsvc1.FindItems(folder, view);
while (more)
{
foreach (Item mail in findResults.Items)
{
do stuff
}
offset = pageSize;
pageSize = pageSize + pageSize;
view = new ItemView(pageSize, offset, OffsetBasePoint.Beginning);
findResults = exchsvc1.FindItems(folder, view);
more = findResults.MoreAvailable;
}
int offset=0;
int pageSize=1000;
布尔莫尔=真;
ItemView视图=新的ItemView(页面大小、偏移量、偏移量基点.开始);
view.PropertySet=PropertySet.FirstClassProperties;
FindItemsResults findResults=exchsvc1.FindItems(文件夹,视图);
而(更多)
{
foreach(findResults.Items中的项目邮件)
{
做事
}
偏移量=页面大小;
pageSize=页面大小+页面大小;
视图=新项目视图(页面大小、偏移量、偏移量基点.开始);
findResults=exchsvc1.FindItems(文件夹,视图);
more=findResults.MoreAvailable;
}
我建议使用定义的过滤器按块提取项目。该方法允许指定一个表示用于缩小搜索结果范围的筛选器的值。查看您的代码,我会说
offset = pageSize;
pageSize = pageSize + pageSize;
如果是您的问题,您应该将偏移量增加返回的项目数。如果查看代码,每次迭代都会将页面大小增加1000。节流意味着您在一个页面中无法获取更多的1000个项目,因此偏移量行实际上是在跳过项目,因为这种逻辑。只用
offset+=findResults.Items.Count
相反,页面大小不应更改,也不应超过1000,并且偏移量应始终基于返回的项目数。“它结束”-在调试器下运行时,它会崩溃而不给您异常吗?哪一行代码会给你带来问题?更大的问题是,为什么你需要访问文件夹中的每一项?