Outlook.Store.GetDefaultFolder Outlook正在新的.pst文件中创建奇怪的文件夹

时间:2017-05-04 18:42:21

标签: c# com outlook-addin office-addins comaddin

创建新的.pst文件后,只使用新的Outlook.Store(.pst)创建了2个文件夹。

示例1:

New .pst

关闭Outlook并重新打开它后,会创建几个文件夹。 有些是标准文件夹,例如回收站,RSSFeed等。但有些人很奇怪并且有奇怪的名字(有奇怪的字符)。

示例2:

New Folders

当我调试COM Addin的例程时,我已经在Addin' Startup'事件,有一个代码检查Outlook.Store的默认文件夹。

' GetDefaultFolder'使用Outlook.Store对象的方法。 Microsoft建议使用此方法来标识Outlook.Store的默认文件夹。

执行此方法时,根据参数,它会在Outlook.Store中创建该文件夹。我创建了一个简单的COM Addin来举例说明:

在Startup事件中,我这样做了:

        private StringBuilder sb = new StringBuilder("##Log##");

        //Startup
        Outlook.NameSpace ns = OutlookApp.Session;
        Outlook.Store lastStore = ns.Stores[1];//Just to get the new Store

        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderCalendar);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderConflicts);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderContacts);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderDeletedItems);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderDrafts);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderInbox);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderJournal);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderJunk);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderLocalFailures);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderManagedEmail);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderNotes);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderOutbox);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderRssFeeds);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderSentMail);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderServerFailures);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderSuggestedContacts);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderSyncIssues);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderTasks);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olFolderToDo);
        GetDefaultFolder(lastStore, Outlook.OlDefaultFolders.olPublicFoldersAllPublicFolders);

        System.Diagnostics.Debug.Write(sb.ToString());

        private void GetDefaultFolder(Outlook.Store newStore, Outlook.OlDefaultFolders olFolderKind)
    {
        Outlook.MAPIFolder rootFolder = null;

        rootFolder = newStore.GetRootFolder();
        sb.AppendLine($"qtd: {rootFolder.Folders.Count}");

        try
        {
            sb.AppendLine($"Folder kind: {olFolderKind.ToString()}");
            newStore.GetDefaultFolder(olFolderKind);
        }
        catch
        {
        }
        finally
        {
            sb.AppendLine($"qtd: {rootFolder.Folders.Count}");
            sb.AppendLine();
            sb.AppendLine();

            if (rootFolder != null)
                Marshal.ReleaseComObject(rootFolder);
        }
    }

我加载新的.pst文件(Outlook.Store)并获取所有默认文件夹。但在少数情况下会添加新的文件夹。

此代码的日志是:

日志

实施例

qtd:1 文件夹类型:olFolderCalendar qtd:2

qtd:2 文件夹类型:olFolderConflicts qtd:2

qtd:2 文件夹类型:olFolderContacts qtd:3

qtd:3 文件夹类型:olFolderDeletedItems qtd:3

qtd:3 文件夹类:olFolderDrafts qtd:4

qtd:4 文件夹类:olFolderInbox qtd:4

qtd:4 文件夹类:olFolderJournal qtd:5

qtd:5 文件夹类:olFolderJunk qtd:6

qtd:6 文件夹类:olFolderLocalFailures qtd:6

qtd:6 文件夹类:olFolderManagedEmail qtd:6

qtd:6 文件夹类:olFolderNotes qtd:7

qtd:7 文件夹类型:olFolderOutbox qtd:8

qtd:8 文件夹类型:olFolderRssFeeds qtd:9

qtd:9 文件夹类:olFolderSentMail qtd:9

qtd:9 文件夹类型:olFolderServerFailures qtd:9

qtd:9 文件夹类型:olFolderSuggestedContacts qtd:9

qtd:9 文件夹类:olFolderSyncIssues qtd:9

qtd:9 文件夹类:olFolderTasks qtd:10

qtd:10 文件夹类型:olFolderToDo qtd:10

qtd:10 文件夹类型:olPublicFoldersAllPublicFolders qtd:10

问题

Outlook创建的这个奇怪的文件夹是什么? 为什么Outlook.Store.GetDefaultFolder方法创建文件夹? 是否有另一种方法可以使用返回与GetDefaultFolder相同的信息,但是不创建文件夹?

0 个答案:

没有答案