2012-05-03 115 views
8

我一直在試圖弄清楚如何獲得所有Outlook文件夾列表一段時間,但只能獲取默認文件夾的列表(即收件箱,發件箱,已發送項目,已刪除的項目等)。如果我有我創建的個人或自定義文件夾,該怎麼辦?例如,如果我將一個文件夾添加到名爲「Receipts」的Outlook,這不會是默認文件夾,並且不會顯示在「默認文件夾」下。我將如何使用c#中的Microsoft.Office.Interop.Outlook訪問此文件夾。獲取所有Outlook文件夾和子文件夾的列表

我想創建一種方法來自動從指定文件夾下載某些新消息到電子表格中。我想如果我能得到所有文件夾的清單,那麼我只能從選定的文件夾中獲得消息。

Outlook._Folders oFolders;   
Outlook.MAPIFolder oPublicFolder = olNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolder‌​Inbox).Parent; 
foreach (Outlook.MAPIFolder Folder in oFolders) 
+1

什麼是你的代碼看起來像現在,只有得到了一些文件夾的? – sarnold

+0

嗯,我嘗試發佈我的代碼,但我是有限的。基本上,它歸結爲(版主,你可以編輯?):Microsoft.Office.Interop.Outlook._Folders oFolders; Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolder = olNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent; foreach(oFolders中的Microsoft.Office.Interop.Outlook.MAPIFolder文件夾)這不是我的確切代碼,只是我複製的精簡版(抱歉)。 – mtlca401

回答

8

這應該打印出您的Outlook中的所有文件夾,包括公用文件夾。

foreach (MAPIFolder folder in olNS.Folders) 
{ 
    GetFolders(folder); 
} 

public void GetFolders(MAPIFolder folder) 
{ 
    if (folder.Folders.Count == 0) 
    { 
     Console.WriteLine(folder.FullFolderPath); 
    } 
    else 
    { 
     foreach (MAPIFolder subFolder in folder.Folders) 
     { 
       GetFolders(subFolder); 
     } 
    } 
} 
相關問題