创建新的.pst文件后,只使用新的Outlook.Store(.pst)创建了2个文件夹。
示例1:
关闭Outlook并重新打开它后,会创建几个文件夹。 有些是标准文件夹,例如回收站,RSSFeed等。但有些人很奇怪并且有奇怪的名字(有奇怪的字符)。
示例2:
当我调试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相同的信息,但是不创建文件夹?