2016-08-03 14 views
1

パスワードでExchangeServiceを使用せずに特定のユーザーのフォルダ構造を取得するにはどうすればよいですか?他のユーザーのメールボックスにアクセスしてフォルダ構造を取得する

私は確かに情報を読む権利を持っていますが、その方法を見つけることはできません。私はそのような何かを探しています:

Mailbox userMailbox = new Mailbox(user); 

WellKnownFolderName userFolderName = userMailbox.WellKnownFolderName.MsgFolderRoot; 

FindFoldersResults findFoldersResults = exchangeService.FindFolders(userFolderName, new FolderView(int.MaxValue)); 

しかし、実際に私は他のWellKnowFolderNamesに直接自分のフォルダにアクセスすることはできません。

編集:私は新しいアプローチを持っていたが、残念ながら、それはすべての項目が返されませんでした:

// Create mailbox for user 
Mailbox mailbox = new Mailbox(user); 

// Create a searchfolder to verify the used folder id is the same like the given folder id 
SearchFilter.IsEqualTo folderIdFilter = new SearchFilter.IsEqualTo(ItemSchema.Id, folderId); 

// Create new folder id 
FolderId usersFolderId = new FolderId(WellKnownFolderName.Root, mailbox); 

// Find items with search criteria 
itemResult = getExchangeService().FindItems(usersFolderId, folderIdFilter, viewBase); 
を唯一のルートフォルダ内のアイテムにアクセスする

答えて

2
itemResult = getExchangeService().FindItems(usersFolderId, folderIdFilter, viewBase); 

いるほとんどのメールボックスのためにそこにいないだろうそこに何かあります。あなたがする必要があるのは、FolderIdのオーバーロードとFindFoldersを使用することだけです。

 FolderId RootFolder = new FolderId(WellKnownFolderName.MsgFolderRoot, "[email protected]"); 
     FolderView FolderVw = new FolderView(1000); 
     FolderVw.Traversal = FolderTraversal.Deep; 
     FindFoldersResults findFoldersResults = null; 
     do 
     { 
      findFoldersResults = service.FindFolders(RootFolder, FolderVw); 
      foreach (Folder mbFolder in findFoldersResults) 
      { 
       Console.WriteLine("Processing Folder " + mbFolder.DisplayName); 
      } 
      FolderVw.Offset += findFoldersResults.Folders.Count; 
     } while (findFoldersResults.MoreAvailable); 
+0

ありがとうございました。あなたはおそらく、特定のユーザーのすべてのアイテムを取得するために同じプロセスを実行する方法を知っていますか?この問題は、特定のユーザーのこのフォルダ内のすべてのアイテムを検索するために、特定のFolderIdを使用する必要があるため、その状況では、FolderIdをメールボックスに設定できません。 – Zumarta

+0

メールボックス内のすべてのアイテムを取得する場合は、各フォルダのアイテムを(findItemsを使用して)列挙するだけです。たとえば、上記の例では、Foreachループ内に何かを配置します。ページングにより、1000のバッチ処理アイテムに制限されます。メールボックス内のアイテムを検索する場合は、2013年以降のEdiscoveryを使用して、メールボックス内の検索条件https:/ /msdn.microsoft.com/en-us/library/office/jj190897(v=exchg.150).aspx –

+0

ありがとう、私は別のポイントでそれを使用することができますが、私は何か違うものを意味しました。私はそのメールボックスにあるすべてのアイテムを取得したいと考えています。すべてのフォルダIDがグローバルに一意であるかどうかわかりません。そのフォルダを検索してそのアイテムを取得するだけです。しかし、フォルダIDはすべてのメールボックスで一意ですか? – Zumarta

関連する問題