Идентификатор папки веб-службы Exchange для недостаточно известного имени папки - PullRequest
20 голосов
/ 27 октября 2011

У меня есть папка в почтовом ящике Exchange, которая является дочерней по отношению к корню (не Inbox).

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

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

Ответы [ 3 ]

30 голосов
/ 27 октября 2011

Вы можете найти все папки с помощью метода 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);
        }
14 голосов
/ 23 марта 2015

Немного поздно, но вот что я использовал, чтобы найти свою папку:

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.

6 голосов
/ 01 ноября 2011

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

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

Root

- папка 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...