0

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

示例 1:

新的.pst

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

示例 2:

新文件夹

当我调试 COM 插件的例程时,我发现在插件的“启动”事件中,有一个代码可以检查 Outlook.Store 的默认文件夹。

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

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

在启动事件中,我这样做了:

        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 相同的信息但不创建文件夹?

4

1 回答 1

1

or类的GetDefaultFolder方法不会也不应该在 Outlook 中创建文件夹。StoreNamespace

首先,我看到一个自定义加载项在 Outlook (DocSite) 中运行。在使用 OOM 创建任何测试之前,我建议禁用所有这些测试。

我还看到在 Outlook 中配置了一个有趣的域名。是 IMAP 还是 Exchange 配置文件?如果是这样,我建议改为配置任何 SMTP 邮箱。

是自定义商店提供商吗?

于 2017-05-08T08:23:26.260 回答