繁体   English   中英

无法从非默认邮箱上的Outlook 2016获取文件夹

[英]Cannot get folders from Outlook 2016 on a non-default mailbox

我正在尝试使用Microsoft Office Interops列出所有文件夹(以便以后从一个特定的文件夹中获取消息)。

如果我将storeIdx设置为1(这是我的个人邮箱)运行此代码,则效果很好,但是如果我尝试在storeIdx 2(我也使用的共享邮箱)上运行此storeIdx ,则绝对不会返回任何内容:

    private void ProcessMail()
    {
        Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
        _NameSpace ns = app.GetNamespace("MAPI");
        int storeIdx = 2;

        MAPIFolder inbox = ns.Stores[storeIdx].GetDefaultFolder(OlDefaultFolders.olFolderInbox);

        Console.WriteLine("Getting folders from mailbox: " + ns.Stores[storeIdx].DisplayName + " in folder " + inbox.Name +"\r\n");
        Console.WriteLine("FOLDERS:\r\n");

        foreach (MAPIFolder f in inbox.Folders)
        {
            Console.WriteLine(f.Name + " (" + f.FullFolderPath + ")");
        }
    }

在各种站点(包括MSDN等)上阅读后,我尝试了几种不同的方法,但是它根本不会显示共享邮箱收件箱中的任何子文件夹。 在Outlook中,我可以看到它们很好并且可以使用它们。

邮箱都在同一台Exchange服务器上。

任何帮助,将不胜感激。

您可以像这样获得所有文件夹:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
List<Folder> folders = new List<Folder>();
foreach(Folder f in app.Session.Folders)
{
    if(ff.DefaultMessageClass.Contains("IPM.Post")
        folders.Add(f);
    folders.AddRange(GetSubFolders(f));
    // Dont forget to release the object cause Outlook don't like too many open obejcts
    Marshal.ReleaseComObject(f);
}

GetSubFolders:

public List<Folder> GetSubFolders(Folder f)
{
    List<Folder> folders = new List<Folder>();
    if(f.Folders.Count > 0)
    {
        foreach(Folder ff in f.Folders)
        {
            if(ff.DefaultMessageClass.Contains("IPM.Post")
                folders.Add(ff);
            folders.AddRange(GetSubFolders(ff));
            Marshal.ReleasComObject(ff);
        }
    }
    return folders;
}

我认为GetNamespace obj的集合Stores代表当前配置文件(当前会话)中所有可用的商店。 您可以使用NameSpace.GetSharedDefaultFolder来获取共享邮箱。

参考链接: 获取所有Outlook文件夹和子文件夹的列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM