В настоящее время я делаю небольшое приложение для обработки общего почтового ящика.
Пока все хорошо, я могу получать электронные письма и работать с ними, все работает отлично.
Но есть одна большая проблема: в начале приложения я перечисляю все электронные письма, расположенные в папке «Входящие» общего почтового ящика. хотя в почтовом ящике находится более 1000 электронных писем, мое приложение находит только их часть. Я не применял никаких фильтров.
это мой код:
public static List<Item> OpenInbox()
{
int offset = 0;
int pagesize = 50;
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "informatik@XXX");
ItemView itemView = new ItemView(pagesize, offset, OffsetBasePoint.Beginning);
FindItemsResults<Item> findResults;
List<Item> emails = new List<Item>();
bool more = true;
while (more)
{
findResults = service.FindItems(SharedMailbox, itemView);
emails.AddRange(findResults);
more = findResults.MoreAvailable;
if (more)
{
itemView.Offset += pagesize;
}
}
return emails;
}
ранее у меня был намного, намного более простой код (макс. 1000 элементов), но результат был тот же:
public static List<Item> OpenInbox()
{
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "informatik@XXX");
ItemView itemView = new ItemView(1000);
FindItemsResults<Item> findResults = service.FindItems(SharedMailbox, itemView);
return findResults;
}
Программа может находить (некоторые) письма:
![enter image description here](https://i.stack.imgur.com/56jJW.png)
Как только письма будут обработаны и перемещены в другую папку, они больше не найдут их. ,Например: найдено 100 писем, обработано 50 -> будет найдено 50 писем для обработки при следующем запуске.
Таким образом, проблема не связана с размером страницы, я могу найти 500 писем и обработать 500. Затем моя программанаходит 0 писем в папке входящих, даже если в них еще осталось 2300 писем.
Способ определения, когда электронное письмо обрабатывается, заключается в следующем: программа является алгоритмом сортировки. Таким образом, при сортировке писем он перемещает их из папки «Входящие», поэтому больше не может быть найден в папке «Входящие».
Однако в папке «Входящие» нет 242 писем, но> 1000
![enter image description here](https://i.stack.imgur.com/s5qlg.png)
Есть идеи о том, почему о некоторых письмах не сообщается?
РЕДАКТИРОВАТЬ: Вот как я настроил соединение для нашего обмена:
public static void StartExchangeService()
{
int counter = 0;
Start:;
// log in to exchange
string password = "XXX";
string mail = "julian.bechtold@XXX.ch";
service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.Credentials = new WebCredentials(mail, password);
try
{
service.AutodiscoverUrl(mail, RedirectionUrlValidationCallback);
}
catch (Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException)
{
if (counter > 3) throw;
else
{
Thread.Sleep(10000);
counter++;
goto Start;
}
}
}