2017-01-20 33 views
0

Outlookの共有メールボックスにフォルダとサブフォルダのリストを取得しようとしています。キャッシュされたExchangeモードとダウンロード共有フォルダの両方がチェックされています。 フォルダは3つまでのレベルです:受信ボックス=>会社=> ABC Company。以下は私のコードです。C#Outlook共有メールボックスがサブフォルダを間欠的に取得する

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はいつか応答しなくなり、私たちのITチームのようにはできません。私は時にはなぜ時には働くか、時には理解できない。それはインターネット接続と関係がありますか? – rjs123431

答えて

0

メールボックスにフォルダを取得する前に、電子メールサーバーにpingを実行して解決策を見つけました。これは私が今までに見つけた解決策です。少なくとも1週間は、少なくとも私の場合はうまくいきました。ありがとうございました。

+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 ().Any(f => f.Name ==" Test "); //常にfalseを返します。何か案は? – caldicot

関連する問題