2012-05-03 186 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); 
     } 
    } 
} 
相关问题