Служба Exchange EWS не находит все элементы - PullRequest
0 голосов
/ 25 октября 2019

В настоящее время я делаю небольшое приложение для обработки общего почтового ящика.

Пока все хорошо, я могу получать электронные письма и работать с ними, все работает отлично.

Но есть одна большая проблема: в начале приложения я перечисляю все электронные письма, расположенные в папке «Входящие» общего почтового ящика. хотя в почтовом ящике находится более 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

Как только письма будут обработаны и перемещены в другую папку, они больше не найдут их. ,Например: найдено 100 писем, обработано 50 -> будет найдено 50 писем для обработки при следующем запуске.

Таким образом, проблема не связана с размером страницы, я могу найти 500 писем и обработать 500. Затем моя программанаходит 0 писем в папке входящих, даже если в них еще осталось 2300 писем.

Способ определения, когда электронное письмо обрабатывается, заключается в следующем: программа является алгоритмом сортировки. Таким образом, при сортировке писем он перемещает их из папки «Входящие», поэтому больше не может быть найден в папке «Входящие».

Однако в папке «Входящие» нет 242 писем, но> 1000
enter image description here

Есть идеи о том, почему о некоторых письмах не сообщается?


РЕДАКТИРОВАТЬ: Вот как я настроил соединение для нашего обмена:

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;
        }
    }

}

...