Извлекать электронные письма из не WellKnownFolder в Outlook - PullRequest
0 голосов
/ 07 декабря 2018

Я извлекаю все электронные письма из папки входящих сообщений Outlook Exchange, используя Microsoft.Exchange.WebServices, и приведенный ниже код отлично работает

ExchangeService service = EmailCredentials();
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(CountRec));

foreach (Item i in findResults.Items)
{
  countOfEmails++;
}

Теперь есть запрос на извлечение сообщений из другой созданной пользователем папки за пределами папки входящих сообщений.Все, что я нашел, использует MAPI или EAGetMail, но мне нужно использовать обмен веб-сервисами.Возможно ли это?

** РЕДАКТИРОВАТЬ

благодаря @farbiondriven, использующему свой код с несколькими настройками, теперь он работает с

ExchangeService service = EmailCredentials();

 // Return only folders that contain items.
 SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);

 FolderView view = new FolderView(10);
 // Unlike FindItem searches, folder searches can be deep traversals.

 view.Traversal = FolderTraversal.Deep;
 // Send the request to search the mailbox and get the results.

FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, searchFilter, view);

foreach (Folder folder in findFolderResults.Folders)
{
    if (folder.DisplayName == "MyFolder")
    {
        FindItemsResults<Item> findResults = service.FindItems(folder.Id, new ItemView(CountRec));

        foreach (Item i in findResults.Items)
        {
            countOfEmails++;
        }
    }
 }

1 Ответ

0 голосов
/ 07 декабря 2018

К сожалению, я не могу это проверить, но вы можете попробовать это?

ExchangeService service = EmailCredentials();

// Return only folders that contain items.
SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);

// Unlike FindItem searches, folder searches can be deep traversals.
view.Traversal = FolderTraversal.Deep;

// Send the request to search the mailbox and get the results.
FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Root, searchFilter, view);

foreach (var folder in findFolderResults.Folders)
{
    FindItemsResults<Item> findResults = service.FindItems(folder, new ItemView(CountRec));

    foreach (Item i in findResults.Items)
    {
        countOfEmails++;
    }
}
...