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

C# Exchange Web服务FolderId用于未知的文件夹名称,c#,exchangewebservices,C#,Exchangewebservices,我在Exchange邮箱中有一个文件夹,它是根目录(而不是收件箱)的子目录 如何使用EWS托管API获取此类文件夹的ID 我发现的唯一例子是那些与知名人士的名字有关的 您可以使用FindFolders方法查找所有文件夹。使用WellKnownFolderName.Root显示收件箱中的所有文件夹。您必须创建一个FolderView并添加要查看的属性(例如ID和DisplayName)。将遍历设置为Deep,以查找所有文件夹。在我的示例中,我正在查找带有DisplayName“Test”的文件夹

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

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


我发现的唯一例子是那些与知名人士的名字有关的

您可以使用
FindFolders
方法查找所有文件夹。使用
WellKnownFolderName.Root
显示收件箱中的所有文件夹。您必须创建一个
FolderView
并添加要查看的属性(例如
ID
DisplayName
)。将遍历设置为
Deep
,以查找所有文件夹。在我的示例中,我正在查找带有
DisplayName
“Test”的文件夹


七层的答案是正确的,但可能会导致不期望的结果

假设您有以下结构:

Root
--Folder A
----Test
--Folder B
----Test
他提供的代码将返回两个测试文件夹

如果知道路径(如文件夹B/Test),则可以迭代获取文件夹路径


请在此链接中查看我的方法
SetFolderHomePage
:。

有点晚了,但以下是我用来查找文件夹的方法:

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);
var-view=newfolderview(1);
view.Traversal=FolderTraversal.Deep;
var filter=newsearchfilter.IsEqualTo(FolderSchema.DisplayName,“已拒绝”);
var results=Service.FindFolders(WellKnownFolderName.Root、过滤器、视图);
如果(results.TotalCount<1)
抛出新异常(“找不到被拒绝的文件夹”);
如果(results.TotalCount>1)
抛出新异常(“多个被拒绝的文件夹”);
拒绝=Folder.Bind(服务、结果、文件夹、单个().Id);

编辑:显然,我的代码在嵌套的继承人档案上不起作用。我根据cookiemonster建议的编辑添加了一行。

我的答案有问题吗?一条评论可以帮助我知道它为什么被否决……嵌套文件夹的修复方法是什么?@faisantp
view.Traversal=FolderTraversal.Deep
;好的,实际上在我的例子中,使用你的代码,我只能找到默认文件夹,而不是自己创建的文件夹。有什么想法吗?好的,我在看我的邮箱,而不是共享文件夹。谢谢如果您需要搜索特定邮箱中的文件夹,请使用
new FolderId(WellKnownFolderName.root,mailbox)
为特定根文件夹创建
FolderId
,并在
FindFolders
调用中使用该文件夹。如果您已经有
ExchangeService
实例,这里有一个仅用于文件夹查找部分的函数:。这样调用:
folderfolder=FindFolderByDisplayName(exchangeService,“我的文件夹名”);Console.WriteLine(folder.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);