Exchange Web Service FolderId для неизвестного имени папки

У меня есть папка в почтовом ящике Exchange, который является дочерним элементом корневого каталога (а не "Входящие" ).

Как получить идентификатор такой папки с помощью EWS Managed API?

Только примеры, которые я нахожу, это те, которые относятся к WellKnownFolderNames.

Ответы

Ответ 1

Вы можете найти все папки с методом FindFolders. Используйте WellKnownFolderName.Root, он отобразит все ваши папки в папке "Входящие". Вы должны создать FolderView, чтобы добавить свойства, которые вы хотите видеть (например, ID и DisplayName). Установите траверсу в глубину, чтобы найти все ваши папки. В моем примере я ищу папку с displayName "Test"

//set Server
        ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
        server.UseDefaultCredentials = true;
        string configUrl = @"https://yourServerAddress.asmx";
        server.Url = new Uri(configUrl);
        //SetView
        FolderView view = new FolderView(100);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
        view.PropertySet.Add(FolderSchema.DisplayName);
        view.Traversal = FolderTraversal.Deep;
        FindFoldersResults findFolderResults = server.FindFolders(WellKnownFolderName.Root, view);
        //find specific folder
        foreach(Folder f in findFolderResults)
        {
            //show folderId of the folder "test"
            if (f.DisplayName == "Test")
                Console.WriteLine(f.Id);
        }

Ответ 2

Немного поздно, но вот что я нашел для своей папки:

var view = new FolderView(1);
view.Traversal = FolderTraversal.Deep;
var filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "Rejected");
var results = Service.FindFolders(WellKnownFolderName.Root, filter, view);
if (results.TotalCount < 1)
    throw new Exception("Cannot find Rejected folder");
if (results.TotalCount > 1)
    throw new Exception("Multiple Rejected folders");
Rejected = Folder.Bind(Service, results.Folders.Single().Id);

Изменить. По-видимому, мой код не работал на вложенных иерархиях. Я добавил строку в соответствии с предложенным cookiemonster.

Ответ 3

Ответ на семипозицию действителен, но может привести к нежелательным результатам.

Предположим, что у вас есть эта структура:

Корень

- Папка A

---- Test

- Папка B

---- Test

Код, который он предоставил, вернет обе тестовую папку.

Если вам известен путь (например, папка B/Test), вы можете получить путь к папке итеративно. Посмотрите мой метод SetFolderHomePage по этой ссылке: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.