如果 MAPI 会话未正常关闭,如何确保 Outlook 实际保存了我刚刚创建的文件夹?

How to make sure that Outlook actually saved the folder I just created if MAPI session was not shutdown gracefully?

我正在使用 OOM 通过 parentFolder.Folders.Add 调用创建文件夹(parentFolderOutlook.Folder 实例)。该文件夹创建得很好。但是,在 Outlook 崩溃后不久(例如,某些其他代码导致发生致命错误)或只是计算机断电。总之,MAPI 会话意外终止。在这种情况下,下次我启动 Outlook 时,我经常看不到创建的文件夹。看起来我对 OOM 所做的更改有时不会传播到基础 .PST 文件。即使是普通的非 Exchange 帐户也会发生这种情况(因此 Exchange 缓存模式不是问题)。

对我来说,知道该文件夹是否真的被保存是很重要的(因为如果我下次没有看到它,代码会认为该文件夹是有意删除的,并从远程服务器上删除它的副本)。

也许有一些 属性 或方法调用来检查 OOM 所做的更改是否实际上已传播到持久存储?

不,您不能这样做,除非您使用在线(而不是缓存)配置文件连接到 Exchange 邮箱。

如果您对 PST 存储或缓存的 Exchange 邮箱 (OST) 进行更改,则无法确保更改得到提交 - Outlook 会定期刷新对本地 PST/OST 文件的更改或在关机。如果 Outlook 进程崩溃,一切都将失败。

正如德米特里所说,没有具体的方法或属性。

要确保有意删除文件夹,您可以处理 Folders.FolderRemove 事件,该事件在从指定的文件夹集合中删除文件夹时触发。在所有其他情况下,如果该文件夹尚不存在,您可以在启动时重新创建该文件夹。