2011-10-27 5 views

Respuesta

22

Puede encontrar todas las carpetas con el método FindFolders. Use WellKnownFolderName.Root mostrará todas sus carpetas de su bandeja de entrada. Tienes que crear un FolderView y agregar las propiedades que deseas ver (ID y DisplayName por ejemplo). Establezca el travesal en profundidad para encontrar todas sus carpetas. En mi ejemplo, yo estoy buscando la carpeta con el idioma "Prueba"

//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 respuesta de siete capas es válido, pero puede leed a resultados no deseados.

Suponga que tiene esta estructura:

Raíz

--folder Un

---- Prueba

--folder B

---- Prueba

El código que proporcionó devolvería ambas carpetas de prueba.

Si conoce la ruta (como la Carpeta B/Prueba), puede obtener la ruta de la carpeta de forma iterativa. Ver mi el método SetFolderHomePage en este enlace: http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx.

9

Un poco tarde, pero el siguiente es lo que solía encontrar mi carpeta:

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

Editar: Al parecer mi código no funcionaba en jerarquías anidadas. Agregué una línea según la edición sugerida de cookiemonster.

+2

¿Hay algún problema con mi respuesta? Un comentario me ayudaría a saber por qué se votó negativamente ... –

+0

¿cuál es la solución para las carpetas anidadas? – sofsntp

+0

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

Cuestiones relacionadas