【问题标题】:PST file issues while accessing in windows application在 Windows 应用程序中访问时出现 PST 文件问题
【发布时间】: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


【解决方案1】:

你可以这样试试

OutLook.MAPIFolder outlook_Folder = null;
Microsoft.Office.Interop.Outlook.NameSpace nsOutlook = appOutlook.GetNamespace("MAPI");
outlook_Folder =nsOutlook.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox).Parent;
Console.WriteLine("Root Folder: " + outlook_Folder.Name);

【讨论】:

    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多