【问题标题】:Get list of all Outlook folders and subfolders获取所有 Outlook 文件夹和子文件夹的列表
【发布时间】:2012-05-03 01:37:13
【问题描述】:

我一直在尝试弄清楚如何获取所有 Outlook 文件夹的列表,但只能获取默认文件夹的列表(即收件箱、发件箱、已发送邮件、已删除邮件等。 .)。如果我创建了个人或自定义文件夹怎么办?例如,如果我向 Outlook 添加一个名为“Receipts”的文件夹,这将不是默认文件夹,也不会显示在“默认文件夹”下。如何在 c# 中使用 Microsoft.Office.Interop.Outlook 访问此文件夹。

我正在尝试创建一种方法来自动将某些新消息从任何给定文件夹下载到电子表格中。我想如果我可以获得所有文件夹的列表,那么我只能从所选文件夹中获取消息。

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

【问题讨论】:

  • 你的代码现在看起来像什么,只得到一些文件夹?
  • 好吧,我尝试发布我的代码,但我的能力有限。基本上,它归结为这个(版主,你能编辑这个吗?): Microsoft.Office.Interop.Outlook._Folders oFolders; Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolder = olNS.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;foreach (Microsoft.Office.Interop.Outlook.MAPIFolder 文件夹在 oFolders) 这不是我的确切代码,只是我复制的精简版(对不起)。

标签: c# outlook


【解决方案1】:

这应该会打印出您的 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);
         }
    }
}

【讨论】:

  • 以上答案几乎是正确的。但如果文件夹包含子文件夹,则不会显示该文件夹。我建议将 WriteLine 代码放在 if 之上。然后它显示所有文件夹以及包含子文件夹的文件夹。
【解决方案2】:

参见 MSDN“如何:枚举文件夹”: http://msdn.microsoft.com/en-us/library/ff184607.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2013-11-26
    • 2013-01-27
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多