Finden Sie alle Unterordner des Ordners Posteingang mit EWS
Habe ich die folgenden Posteingang-Ordner-Struktur:
Inbox
--ABC
----ABC 2
----ABC 3
--XYZ
----XYZ 2
--123
----123 A
----123 B
----123 C
Ich bin mit Exchange Web Services und den folgenden code zu finden, der den untergeordneten Ordner des Ordners Posteingang:
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.AutodiscoverUrl("[email protected]");
Mailbox mb = new Mailbox("[email protected]");
FindFoldersResults findResults = service.FindFolders(
WellKnownFolderName.Inbox,
new FolderView(int.MaxValue));
foreach (Folder folder in findResults.Folders)
{
Console.WriteLine(folder.DisplayName);
}
Diese teilweise funktioniert, da gibt es das ABC, XYZ und 123 Ordner; leider funktioniert es nicht wieder die Ordner in jedem Ordner (ABC 2, ABC 3, XYZ 2, 123 A, 123 B, 123 C).
Es ist auch möglich, dass ein Ordner mehr als eine Ebene von Unterordnern drin.
Wie kann ich folgenden code schreiben, damit wird es wieder alle Unterordner unabhängig davon, wie tief geschachtelt werden können Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie sagen, EWS zu tun eine deep traversal beim durchsuchen der Ordner. Sie können dies tun, mit der
Ordneransicht.Traversal
Eigenschaft. Würde der code dann geändert werden, um ähnlich der folgenden:Können Sie die Seite Sie Ihre Anforderungen und erhalten Sie die gesamte Ordner-Hierarchie der server, die in nur ein paar Anrufe. Der Schlüssel ist die
FolderView.Traversal
Eigenschaft, wie Jacob sagt.Beispielsweise für ein Exchange-Postfach mit ~1,300 Ordner, der folgende code macht nur 2 Anfragen. Sie können die Papiergröße auf was auch immer Sie möchten, so lange, wie Sie Aufenthalt auf oder unter dem server begrenzen.
Zur info: Exchange Online (Office365) Kappen bei maximal 1.000 Elemente in einer Reaktion. Habe ich noch nicht getestet, also ich kann nicht sprechen für alle ähnlichen Grenzen wie beim Abfragen einer lokalen Exchange-Server.