Как получить имя Outlook PST из выбранной почты VB.NET

У меня была ситуация, когда я хочу получить имя pst на основе выбора, сделанного для элемента в проводнике Outlook. В основном мой Outlook имеет много почтовых ящиков. Мне нужно иметь имя pst элемента электронной почты, который я выбрал. До сих пор я пробовал много итераций, но мне не повезло, так как в основном я из фона VBA, и в VBA я получаю это очень легко, как показано ниже:

oMailItem.Parent.Parent 

и это дает мне идеальный результат. Однако в .NET я не вижу oMailItem.Parent.Parent, когда ставлю точку после первого Parent, IntelliSense больше не предлагает свойство Parent. Я пробовал конвертировать, но не повезло, так как я очень новичок в VB.NET.

Пожалуйста, порекомендуйте.

Спасибо, Рашид


person Rashid Khan    schedule 17.07.2016    source источник


Ответы (2)


Свойство Parent имеет тип Object, поэтому сначала необходимо приведите его к Outlook.Folder вот так. Имейте в виду, однако, что преобразование может оказаться невозможным, поэтому вам следует проверить, действительно ли folder относится к объекту и не является ли Nothing

Dim folder As Outlook.Folder = TryCast(oMailItem.Parent, Outlook.Folder)
If folder IsNot Nothing Then
    folder.Parent ...
End If
person DAXaholic    schedule 17.07.2016
comment
Спасибо за ответ попробую - person Rashid Khan; 17.07.2016
comment
Привет, я попробовал код и смог преобразовать объект, но как мне получить путь к папке, когда я попробовал это Dim oFolder As Outlook.Folder oFolder = TryCast(oItem.Parent, Outlook.Folder) Если oFolder IsNot Nothing Then oFolder.Parent .ToString() Конец, если - person Rashid Khan; 17.07.2016
comment
Мне нужно получить корневую папку из этой цепочки. Я просматриваю объект oFolder и в разделе «Динамический вид» вижу, что он дает мне «Мое имя PS\Inbox\PersonalFolder». - person Rashid Khan; 17.07.2016
comment
Если вам нужна корневая папка, почему бы не перейти на следующий уровень, пока не исчезнет родительская папка? Таким образом, по сути, снова приведя папку.Parent к Outlook.Folder, если она не возвращает ничего, и в этот момент вы должны были достичь корня. - person DAXaholic; 17.07.2016
comment
Если вам нужен «путь» в виде строки, вы можете попробовать msdn.microsoft.com/en-us/library/ — но я еще не проверял. - person DAXaholic; 17.07.2016

Вам нужно использовать Store.FilePath. Чтобы получить родительский магазин, используйте MAPIFolder.Store. Чтобы получить родительскую папку, прочитайте свойство MailItem.Parent и приведите его к MAPIFolder.

person Dmitry Streblechenko    schedule 17.07.2016