2017-01-20 1 views
0

J'essaie d'obtenir la liste des dossiers et sous-dossiers dans une boîte aux lettres partagée dans Outlook. Utiliser le mode Exchange mis en cache et Télécharger les dossiers partagés ont été cochés. Les dossiers comportent jusqu'à 3 niveaux: Boîte de réception => Société => Société ABC. Voici mon code.C# Outlook Boîte aux lettres partagée obtenir des sous-dossiers par intermittent

myApp = new Microsoft.Office.Interop.Outlook.Application();

  ns = myApp.Session; 
      stores = ns.Stores; 

      for (int i = 1; i <= stores.Count; i++) 
      { 
       var _store = stores[i]; 
       if (_store.DisplayName.ToLower().Contains(displayName.ToLower())) 
       { 
        store = _store; 
        break; 
       } 
      } 

      rootFolder = store.GetRootFolder(); 
      folders = rootFolder.Folders; 

      for (int i = 1; i < folders.Count; i++) 
      { 
       mainfolder = (Microsoft.Office.Interop.Outlook.MAPIFolder)folders[i]; 

       if (mainfolder != null) 
       { 
        if (mainfolder.Name.Trim().ToLower() == mainfolderName.Trim().ToLower()) 
        { 
         foreach (Microsoft.Office.Interop.Outlook.MAPIFolder f in mainfolder.Folders) 
         { 
          if (f.Name.Trim().ToLower() == folderName.Trim().ToLower()) 
          { 
           folder = f; 
           if (subFolderName != "") 
           { 
            foreach (Microsoft.Office.Interop.Outlook.MAPIFolder sub in f.Folders) 
            { 
             if (sub.Name.Trim().ToLower() == subFolderName.Trim().ToLower()) 
             { 
              subfolder = sub; 
              break; 
             } 
            } 
           } 
           break; 
          } 
         } 
         break; 
        } 
       } 

      } 

Obtenir avec succès le premier niveau - Boîte de réception, Brouillons, Archives, spam, etc. Mais il n'a pas toujours obtenir le deuxième niveau, mainfolder.Folders.Count retourne 0. Y at-il quelque chose que je manqué? Je vous remercie.

+0

Pouvez-vous réellement voir ces dossiers dans Outlook? Avez-vous essayé de désactiver le mode caché? –

+0

Oui, je peux voir ces dossiers dans mon Outlook. La désactivation du mode mis en cache empêche Outlook de répondre et n'est pas possible selon notre équipe informatique. Je n'arrive pas à comprendre pourquoi ça marche parfois et parfois non. Est-ce que cela a à voir avec la connexion Internet? – rjs123431

Répondre

0

J'ai trouvé une solution en envoyant une requête ping au serveur de messagerie avant d'obtenir les dossiers dans la boîte aux lettres. C'est la solution que j'ai trouvée jusqu'ici, une semaine maintenant, au moins ça a marché dans mon cas. Je vous remercie.

+0

Je suis confronté exactement au même problème. Pourriez-vous s'il vous plaît poster un extrait de code de votre solution? Merci ... – caldicot

+0

'using System.Net.NetworkInformation; var ping = new Ping(); var reply = ping.Send ("mail.server", 3000); si (reply.Status == IPStatus.Success) { } { autre } ' – rjs123431

+0

malheureusement, cela ne résout pas mon problème. J'essaie d'accéder aux sous-dossiers de la boîte de réception d'une boîte de réception partagée. La taille est 0, mais quand j'essaye de créer un dossier qui existe déjà une exception soulève. 'var i = parentFolder.Folders.OfType () .Any (f => f.Name ==" Test "); // retourne toujours false'. Des idées? – caldicot