2014-01-15 81 views
0

在WinForms應用程序中,訪問Microsoft Outlook根文件夾以獲取特定於配置文件(w.r.t PST文件)的子文件夾。 下面是用於從Outlook命名空間獲取根文件夾的代碼。訪問Windows應用程序時出現PST文件問題

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命名空間WRT PST文件名獲得根文件夾拋出一個異常:

MAPIFolder rootFolder = nsOutlook.Stores[sSelectedPSTFileName].GetRootFolder(); 

例外:嘗試的操作失敗。找不到對象。

我已經在MS Outlook中加載該PST文件,它工作正常。但是,當我從代碼訪問該文件時,它顯示異常。

有什麼辦法可以識別PST文件是否損壞? 在這方面的幫助將不勝感激。

+0

Outlook如何在Outlook中顯示PST文件?它是否使用沒有「.pst」擴展名的文件名?或者它使用顯示名稱? –

+0

它顯示沒有擴展名的文件名。 –

+0

如果循環訪問Namespace.Stores集合,會發生什麼情況?那裏有新店嗎?它有預期的名字嗎?我只能建議使用Redemption - 它的RDOSession.Stores.AddPstStore方法返回RDOPstStore對象的廣告實例,而不需要按名稱訪問它。 –

回答

0

你可以做這樣

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(「根文件夾:」+ outlook_Folder.Name);

相關問題