使用EWS查找收件箱文件夹的所有子文件夹

Ses*_*ame 8 c# recursion exchange-server exchangewebservices

我有以下收件箱文件夹结构:

Inbox
--ABC
----ABC 2
----ABC 3
--XYZ
----XYZ 2
--123
----123 A
----123 B
----123 C
Run Code Online (Sandbox Code Playgroud)

我正在使用Exchange Web服务和以下代码来查找收件箱文件夹的子文件夹:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);

service.AutodiscoverUrl("MyName@MyDomain.com");
Mailbox mb = new Mailbox("MyName@MyDomain.com");

FindFoldersResults findResults = service.FindFolders(
    WellKnownFolderName.Inbox,
    new FolderView(int.MaxValue));

foreach (Folder folder in findResults.Folders)
{
    Console.WriteLine(folder.DisplayName);
}
Run Code Online (Sandbox Code Playgroud)

这部分有效,因为它返回ABC,XYZ和123文件夹; 不幸的是,它没有返回每个文件夹内的文件夹(ABC 2,ABC 3,XYZ 2,123 A,123 B,123 C).

此外,文件夹可能在其中具有多个级别的子文件夹.

如何编写此代码,以便它将返回所有子文件夹,无论它们的嵌套程度如何?

Jak*_*sen 15

您可以告诉EWS在搜索文件夹时进行深度遍历.您可以使用FolderView.Traversal酒店进行此操作.然后,您的代码将更改为类似于以下内容:

FindFoldersResults findResults = service.FindFolders(
    WellKnownFolderName.Inbox,
    new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep });
Run Code Online (Sandbox Code Playgroud)