Exchange Web服务FolderId用于未知的文件夹名称

我在Exchange邮箱中有一个文件夹,它是根目录(不是收件箱)的子项。

如何使用EWS托管API获取此类文件夹的ID?

我找到的只有与WellKnownFolderNames有关的例子。

您可以使用FindFolders方法找到所有文件夹。 使用WellKnownFolderName.Root它将显示收件箱的所有文件夹。 您必须创建一个FolderView并添加您想要查看的属性(例如ID和DisplayName)。 将travesal设置为deep以便查找所有文件夹。 在我的例子中,我正在寻找具有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); } 

有点晚了,但以下是我以前找到的文件夹:

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

编辑 :显然我的代码不适用于嵌套的heirarchies。 我根据cookiemonster的建议编辑添加了一行。

七层的答案是有效的,但可能导致不希望的结果。

假设你有这个结构:

– 文件夹A.

– – 测试

– 文件B

– – 测试

他提供的代码将返回两个测试文件夹。

如果您知道路径(如文件夹B /测试),则可以迭代获取文件夹路径。 请参阅此链接中的方法SetFolderHomePage: http : //www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API .aspx 。