Id cartella del servizio Web di Exchange per un nome di cartella non noto

Id cartella del servizio Web di Exchange per un nome di cartella non noto

Puoi trovare tutte le cartelle con il FindFolders metodo. Usa WellKnownFolderName.Root per mostrare tutte le cartelle della Posta in arrivo. Devi creare un FolderView e aggiungi le proprietà che vuoi vedere (ID e DisplayName Per esempio). Imposta l'attraversamento su Deep per trovare tutte le tue cartelle. Nel mio esempio, sto cercando la cartella con il DisplayName "Prova".

// set Server
ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
server.UseDefaultCredentials = true;
string configUrl = @"https://yourServerAddress.asmx";
server.Url = new Uri(configUrl);

// set View
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);
    }
}

Un po' in ritardo, ma il seguente è quello che ho usato per trovare la mia cartella:

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

Modifica :Apparentemente il mio codice non funzionava su gerarchie nidificate. Ho aggiunto una riga come da modifica suggerita da cookiemonster.


La risposta a sette strati è valida, ma può portare a risultati indesiderati.

Supponiamo di avere questa struttura:

Root
--Folder A
----Test
--Folder B
----Test

Il codice che ha fornito restituirà entrambe le cartelle di prova.

Se conosci il percorso (come la cartella B/Test), puoi ottenere il percorso della cartella in modo iterativo.

Vedi il mio metodo SetFolderHomePage a questo link:http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.