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

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

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

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

2 ответа

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

set App = CreateObject("Outlook.Application")
set NS = App.GetNamespace("MAPI")
NS.Logon
set Msg = NS.GetItemFromID(EntryID)
MsgBox Msg.Subject

Для C#:

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

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

Другие вопросы по тегам