Exchange Web Service FolderId for a not well known folder name

落花浮王杯 提交于 2019-11-29 01:11:38

You can find all Folders with the FindFolders Method. Use WellKnownFolderName.Root it will show all your folders of your Inbox. You have to create a FolderView an add the properties which you want to see ( ID and DisplayName for example). Set the travesal to deep in order to find all of your folders. In my example I'm looking for the folder with the 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);
        }

A bit late, but the following is what I used to find my folder:

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

Edit: Apparently my code did not work on nested heirarchies. I added a line as per cookiemonster's suggested edit.

The answer of seven-ply is valid, but may lead to undesired results.

Suppose you have this structure:

Root

--Folder A

----Test

--Folder B

----Test

The code he provided would return both test folder.

If you know the path (like Folder B/Test), you can get the folder path iteratively. See my the method SetFolderHomePage in this link: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!