Outlook.Store.GetDefaultFolder Outlook создает странные папки в новом файле PST
После создания нового файла.pst с новым Outlook.Store(.pst) создаются только 2 папки.
Пример 1:
После закрытия 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.
Является ли поставщик нестандартного магазина?