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

时间:2018-10-12 12:46:34

标签: c# outlook office-interop

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

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

    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服务器上。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

"RawMatrixData": "[[1,2,3,4],[5,6,7,8]]"

GetSubFolders:

ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();
myList = [[1,2,3,4],[5,6,7,8]];//it must be list not string

答案 1 :(得分:0)

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

参考链接:Get list of all Outlook folders and subfolders