2013-02-15 52 views
1

我使用Microsoft的Exchange Web服務(EWS)。Exchange Web Services - 讀取子文件夾

我的代碼是這樣的:

Folder rootfolder = Folder.Bind(server, WellKnownFolderName.MsgFolderRoot); 

我的文件夾的Exchange服務器上的結構是:

ExchangeService server = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 

我使用此代碼得到的文件夾

Inbox 
| 
| 
Folder1 
| 
|_Sub_Folder1 
| | 
| |_Sub_Sub_Folder1 
| | 
| |_Sub_Sub_Sub_Folder1 
| 
|_Sub_Folder2 
| | 
| |_Sub_Sub_Folder1 
| 
Folder2 
| 
|_Sub_Folder1 
| 
|_Sub_Folder2 

當我使用上面介紹的功能時,我只收到主要文件夾:

InboxFolder1Folder2

我想收到SubFolders ......以及和明年我想從SubFolders得到物品。

例如:

Folder1 
| 
|_Sub_Folder1 
| | 
| |_Sub_Sub_Folder1 
| | 
| |_Sub_Sub_Sub_Folder1 -> I want to get these items 

你能幫助我,給我提供的一些代碼的例子嗎?我應該使用什麼功能?

我試着使用:

FindFoldersResults findFoldersResults2 = folder.FindFolders(new FolderView(100)); 

但是,當我收到例如文件夾:InboxFolder1Folder2和我讀到ChildFolderCount,我沒有收到subfolders前的數量。 2 - >我收到計數0

出了什麼問題?我需要從subfolders閱讀這些項目。

+2

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-02-15 03:49:09

+1

http://stackoverflow.com/questions/7590510/find-all-subfolders-of-the-inbox-folder-using-ews – 2013-03-15 09:58:37

回答

0

我覺得你有2個問題。 第一個:「如何獲得子文件夾」和第二個「爲什麼是ChildFolderCoun = 0」。

第二個答案很簡單。您必須調用folder.Load()並提供一個包含FolderSchema.ChildFolderCount屬性定義的屬性集。

回答你的第一個問題是,你將不得不調用FindFolders()爲每個文件夾中recusive循環。至少我沒有找到一個參數或類似的東西來告訴FindFolders-Method包含所有子文件夾。

希望幫助你...

0

您正在尋找方法,如果文件夾中存在或不進行驗證。您可以使用下面的方法。它遞歸地搜索每個子文件夾。更改用於深度/淺度搜索的FolderView的Traversal屬性。

FolderId subfolderInfo; 
// Call Method 
bool folderExist = isFolderExist(exchange, "Folder1", out subfolderInfo); 

//Implementation 

private bool isFolderExist(ExchangeService exchange, string subFolder, out FolderId subfolderInfo) 
     { 
      try 
      { 
       FolderView view = new FolderView(100); 
       view.PropertySet = new PropertySet(BasePropertySet.IdOnly); 
       view.PropertySet.Add(FolderSchema.DisplayName); 
       view.Traversal = FolderTraversal.Deep; 
       FindFoldersResults findFolderResults = exchange.FindFolders(WellKnownFolderName.Root, view); 
       foreach (Folder folder in findFolderResults) 
       { 
        if (folder.DisplayName == subFolder) 
        {       
         subfolderInfo = folder.Id; 
         return true; 
        } 
       } 
      } 
      catch (Exception Ex) 
      { 
       ... 
      }   
      subfolderInfo = null; 
      return false; 
     } 
相關問題