Откройте почтовый элемент Outlook, используя EntryID, StoreID и / или PR_ENTRYID

ПРИМЕЧАНИЕ. Я использую VBA и Office 2007. (я бы использовал C #, но параметры проекта не позволяют этого).

Я пытаюсь найти какой-нибудь метод в Outlook или API, который позволил бы мне открыть почтовый элемент Outlook, предоставив либо Outlook EntryID, либо свойство MAPI «PR_ENTRYID» из базы данных Access. Я нашел много ссылок на указанный код, но никогда не видел, чтобы кто-нибудь действительно опубликовал решение. Я попытался включить ссылки на mapi32.dll и OLMAPI32.dll, но получаю следующую ошибку: «Не могу добавить ссылку на указанный файл». Я предполагаю, что это потому, что эти dll предназначены для .NET.

Любая помощь, которую вы можете оказать, будет принята с благодарностью.


person Kyland Holmes    schedule 15.09.2011    source источник


Ответы (2)


Используйте 1_. Обратите внимание, что второй параметр (идентификатор магазина) не является обязательным. Вы можете опустить его, если в текущем сеансе Outlook уже затронул данный магазин. В противном случае Outlook вызовет исключение «идентификатор неизвестной записи». Если указан идентификатор записи магазина, Outlook сначала откроет его, и поставщик магазина сможет зарегистрировать свои идентификаторы записей в системе MAPI.

set App = CreateObject("Outlook.Application")
set NS = App.GetNamespace("MAPI")
NS.Logon
set Msg = NS.GetItemFromID(EntryID)
MsgBox Msg.Subject
person Dmitry Streblechenko    schedule 16.09.2011
comment
Спасибо, Дмитрий, это работает. Я везде искал этот ответ! - person Marcin; 18.01.2012

Для C #:

var ns = OutlookApp.GetNamespace("MAPI");
var item = ns.GetItemFromID(entryId) as MailItem;

Где OutlookApp имеет тип Microsoft.Office.Interop.Outlook._Application.

person Berezh    schedule 13.03.2013