【发布时间】:2014-02-03 12:30:36
【问题描述】:
在 WinForms 应用程序中,访问 Microsoft Outlook 根文件夹以获取配置文件特定的(w.r.t PST 文件)子文件夹。 下面是用于从 Outlook 命名空间获取根文件夹的代码。
Microsoft.Office.Interop.Outlook.Application appOutlook = new Microsoft.Office.Interop.Outlook.Application();
appOutlook.Session.AddStore(sPSTFilePath);
Microsoft.Office.Interop.Outlook.NameSpace nsOutlook = appOutlook.GetNamespace("MAPI");
string sSelectedPSTFileName = Path.GetFileNameWithoutExtension(sPSTFilePath);
MAPIFolder rootFolder = nsOutlook.Stores[sSelectedPSTFileName].GetRootFolder();
它工作正常,但在某些 PST 文件上,当它从 Outlook 命名空间 w.r.t PST 文件名获取根文件夹时会引发异常:
MAPIFolder rootFolder = nsOutlook.Stores[sSelectedPSTFileName].GetRootFolder();
异常:尝试的操作失败。找不到对象。
我已经在 MS Outlook 中加载了该 PST 文件,它工作正常。但是,当我从代码中访问该文件时,它会显示异常。
有什么方法可以识别 PST 文件是否损坏? 我们将不胜感激。
【问题讨论】:
-
Outlook 如何在 Outlook 中显示该 PST 文件?它是否使用不带“.pst”扩展名的文件名?还是使用显示名称?
-
它显示没有扩展名的文件名。
-
如果循环访问 Namespace.Stores 集合会发生什么?新店在吗?它有预期的名称吗?我只能建议使用 Redemption - 它的 RDOSession.Stores.AddPstStore 方法返回 RDOPstStore 对象的广告实例,而无需按名称访问它。
标签: c# winforms outlook office-interop