2014-11-24 87 views
1

我的Outlook客戶端有一個共享文件夾「xxxx yyyy」。但是,下面的代碼遞歸地迭代所有文件夾和子文件夾,不會打印出該文件夾。爲什麼代碼無法獲取文件夾?使用Exchange Web服務API 2.0找不到公用文件夾?

private static void PrintAllPubFolder(ExchangeService service) 
{ 
    var folderView = new FolderView(int.MaxValue); 
    var findFolderResults = service.FindFolders(WellKnownFolderName.PublicFoldersRoot, folderView); 
    foreach (var folder in findFolderResults.Where(x => !ignore.Any(i => i == x.DisplayName))) 
    { 
     Console.WriteLine(folder.DisplayName); 
     PrintSubFolder(service, folder.Id, " "); 
    } 
} 

private static void PrintSubFolder(ExchangeService service, FolderId folderId, string p) 
{ 
    var folderView = new FolderView(int.MaxValue); 
    var findFolderResults = service.FindFolders(folderId, folderView); 
    foreach (var folder in findFolderResults.Where(x => !ignore.Any(i => i == x.DisplayName))) 
    { 
     Console.WriteLine("{0}{1}", p, folder.DisplayName); 
     PrintSubFolder(service, folder.Id, p + " "); 
    } 
} 

回答

1

如果您使用的是Exchange 2010或更高版本不使用

VAR文件夾視圖=新的文件夾視圖(int.MaxValue);

節流將限制結果返回到1000,所以如果您希望更多的1000個條目返回,那麼您需要分頁結果。然而,它並沒有多大意義,通過每個公共文件夾枚舉,以獲得目標看方法下面的鏈接

Searching Of Folders in Public Folders by giving its PATH Name

如果文件夾在您的郵箱,然後只是做了搜索,基於在名稱,如

 FolderView ffView = new FolderView(1000); 
     ffView.Traversal = FolderTraversal.Deep; 
     SearchFilter fSearch = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "xxxx yyyy"); 
     FindFoldersResults ffResults = service.FindFolders(WellKnownFolderName.MsgFolderRoot, fSearch, ffView); 

乾杯 格倫

+0

我試圖用代碼的鏈接,但它無法找到該文件夾​​ - 文件夾顯示在Outlook的「XXXX YYYY」,我不知道它有任何父母f所以我嘗試枚舉所有文件夾以獲取完整路徑。我試圖將'int.MaxValue'修改爲1000. – ca9163d9 2014-11-25 06:23:20

+1

有幾個問題是您的郵箱中的共享文件夾?還是公共文件夾您發佈的代碼顯示公共文件夾搜索?你知道Exchange中的公用文件夾是什麼嗎?如果您查看郵箱中的文件夾列表下的哪個層次結構? http://office.microsoft.com/en-au/outlook-help/show-all-folders-HP005242678.aspx。我建議你使用EWSeditor https://ewseditor.codeplex.com/並找出文件夾是第一個。 – 2014-11-26 05:47:38

相關問題