Outlook.Store.GetDefaultFolder Outlook создает странные папки в новом файле PST

После создания нового файла.pst с новым Outlook.Store(.pst) создаются только 2 папки.

Пример 1:

Новый.pst

После закрытия Outlook и его повторного открытия создаются несколько папок. Некоторые из них являются стандартными папками, такими как корзина, RSSFeed и другие. Но некоторые странные и имеют странные имена (со странными символами).

Пример 2:

Новые папки

Когда я отлаживал подпрограмму моего COM Addin, я обнаружил, что в событии Addin 'Startup' есть код, который проверяет папки по умолчанию в Outlook.Store.

Используется метод GetDefaultFolder объекта Outlook.Store. Microsoft рекомендует этот метод для определения папок по умолчанию в Outlook.Store.

Когда этот метод выполняется, в зависимости от параметра он создает папку в Outlook.Store. Я создал простой надстройку COM, чтобы проиллюстрировать:

В событии 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, но НЕ создает папки?

1 ответ

Метод GetDefaultFolder объекта Store или же Namespace класс не создает и не должен создавать папки в Outlook.

Прежде всего, я вижу пользовательские надстройки, работающие в Outlook (DocSite). Перед созданием любого теста с помощью OOM я бы предложил отключить их все.

Также я вижу интересное доменное имя, настроенное в Outlook. Это профиль IMAP или Exchange? Если это так, я бы предложил вместо этого настроить любой почтовый ящик SMTP.

Является ли поставщик нестандартного магазина?

Другие вопросы по тегам