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.