2017-01-20 7 views
0

Я пытаюсь получить список папок и подпапок в общем почтовом ящике в Outlook. Использовать режим кэширования Exchange и установить флажок «Загрузить общие папки». Папки до 3 уровней: Inbox => Компания => Компания ABC. Ниже мой код.C# Outlook Shared Mailbox get subfolders 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; 
        } 
       } 

      } 

Он успешно получить первый уровень - Входящие, Черновики, архив, спам и т.д. Но это не всегда получает второй уровень, mainfolder.Folders.Count возвращает 0. Есть ли что-то я пропустил? Спасибо.

+0

Можете ли вы увидеть эти папки в Outlook? Вы пытались отключить режим кэширования? –

+0

Да, я могу видеть эти папки в моем Outlook. Отключение режима кэширования делает Outlook недействительным когда-то, и это также невозможно в соответствии с нашей ИТ-командой. Я не могу понять, почему иногда его работают, а иногда нет. Это связано с подключением к Интернету? – rjs123431

ответ

0

Я нашел решение, проверив сервер электронной почты, прежде чем получать папки в почтовом ящике. Это решение, которое я нашел до сих пор, через неделю, по крайней мере, это сработало в моем случае. Спасибо.

+0

Я столкнулся с той же проблемой. Не могли бы вы опубликовать фрагмент кода вашего решения? Спасибо ... – caldicot

+0

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

+0

, к сожалению, это не решает мою проблему. Я пытаюсь получить доступ к подпапкам папки входящих сообщений общего почтового ящика. Размер равен 0, но когда я пытаюсь создать папку, которая уже существует, возникает исключение. 'var i = parentFolder.Folders.OfType (). Любой (f => f.Name ==" Test "); // возвращает всегда false'. Есть идеи? – caldicot