Проблеми с PST файл при достъп в приложение на Windows

В приложение 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 с име на PST файл на:

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

Изключение: Опитът за операция е неуспешен. Обект не може да бъде намерен.

Заредих този PST файл в MS Outlook, той работи добре. Но когато имам достъп до този файл от кода, той показва изключение.

Има ли някакъв начин да се установи, че PST файлът е повреден или не? Помощта в това отношение ще бъде оценена.


person Itz.Irshad    schedule 15.01.2014    source източник
comment
Как Outlook показва този PST файл в Outlook? Използва ли името на файла без разширението .pst? Или използва екранно име?   -  person Dmitry Streblechenko    schedule 15.01.2014
comment
Показва името на файла без разширение.   -  person Itz.Irshad    schedule 15.01.2014
comment
какво се случва, ако преминете през колекцията Namespace.Stores? Новият магазин там ли е? Има ли очакваното име? Мога само да предложа използването на Redemption - неговият метод RDOSession.Stores.AddPstStore връща рекламен екземпляр на обекта RDOPstStore, без да е необходимо да го осъществявате по име.   -  person Dmitry Streblechenko    schedule 15.01.2014


Отговори (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);
person sachin    schedule 26.08.2014