2011-10-27 10 views

risposta

22

si possono trovare tutte le cartelle con il metodo FindFolders. Usa WellKnownFolderName.Root mostrerà tutte le tue cartelle della tua Posta in arrivo. Devi creare un FolderView e aggiungere le proprietà che vuoi vedere (ID e DisplayName per esempio). Imposta il travesal in profondità per trovare tutte le tue cartelle. Nel mio esempio sto cercando la cartella con il 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); 
     } 
5

La risposta dei sette veli è valida, ma può portare ad una risultati indesiderati.

Supponiamo di avere questa struttura:

Root

--Folder Un

---- prova

--Folder B

---- test

Il codice fornito restituirebbe entrambe le cartelle di test.

Se si conosce il percorso (come Cartella B/Test), è possibile ottenere il percorso della cartella in modo iterativo. Vedere il mio metodo SetFolderHomePage in questo collegamento: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.

9

un po 'tardi, ma quanto segue è 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); 

Edit: A quanto pare il mio codice non ha funzionato su gerarchie nidificate. Ho aggiunto una riga secondo la modifica suggerita da cookiemonster.

+2

C'è qualcosa di sbagliato nella mia risposta? Un commento mi aiuterebbe a capire perché ha votato ... –

+0

qual è la correzione per le cartelle nidificate? – sofsntp

+0

@faisantp 'view.Traversal = FolderTraversal.Deep'; –

Problemi correlati