2011-10-27 17 views

答えて

22

FindFoldersメソッドですべてのフォルダを見つけることができます。 WellKnownFolderName.Rootを使用すると、受信トレイのすべてのフォルダが表示されます。 FolderViewを作成して、見たいプロパティを追加する必要があります(IDやDisplayNameなど)。すべてのフォルダを見つけるには、travesalを深く設定します。私の例では、私は、DisplayName「テスト」

//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

7プライの答えが有効であるとのフォルダを探していますが、望ましくない結果にLEEDことがあります。

は、あなたがこのような構造を持っているとします

ルート

--folder ----テスト

--folder B

----テスト

彼が提供したコードは、両方のテストフォルダを返します。

パス(フォルダB /テストなど)がわかっている場合は、フォルダパスを繰り返し取得できます。このリンクのメソッドSetFolderHomePageを参照してください:http://www.infinitec.de/post/2011/10/05/Setting-the-Homepage-of-an-Exchange-folder-using-the-EWS-Managed-API.aspx

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

編集:どうやら私のコードは、ネストされたheirarchies上で動作しませんでした

9

少し遅れますが、次は私が私のフォルダを検索するために使用するものです。 cookiemonsterの提案された編集に従ってラインを追加しました。

+2

私の答えに何か問題がありますか?コメントは、なぜ投票したのかを知るのに役立ちます... –

+0

入れ子のフォルダの修正は何ですか? – sofsntp

+0

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