MAPI_E_INVALID_ENTRYID при получении контакта из Outlook через Redemption

Я хотел бы получить контакт с известным EntryID в определенной папке из Outlook / Exchange с помощью Redemption.

Следующий код вызывает GetMessageFromID для объекта RDOSession. Мне нужны только контакты из стандартной папки «Контакты», поэтому я использую второй аргумент, чтобы ограничить пространство поиска.

RDOFolder folder = Session.GetDefaultFolder(rdoDefaultFolders.olFolderContacts);
RDOContactItem i = Session.GetMessageFromID(syncRow.SyncId, folder.EntryID, null) as RDOContactItem;

Всякий раз, когда я делаю это, искупление вызывает исключение COM: Error in IMAPISession.OpenMsgStore: MAPI_E_INVALID_ENTRYID. Что я делаю неправильно?


person Matt Jacobsen    schedule 31.05.2010    source источник


Ответы (1)


GetMessageFromID принимает в качестве параметров 2 идентификатора записи (1 обязательный, 1 необязательный) - идентификатор записи сообщения и идентификатор записи магазина. Похоже, вы передаете идентификатор записи папки вместо идентификатора записи магазина.

person Dmitry Streblechenko    schedule 31.05.2010
comment
Ах ... Есть ли способ ограничить это папками в магазине? Сейчас я просто проверяю, где находится RDOContactItem после того, как я его получил. - person Matt Jacobsen; 31.05.2010
comment
Вы можете использовать RDOContactItem.Parent для получения родительской папки (RDOFolder). Затем вы можете использовать RDOSession.CompareEntryIDs для сравнения идентификатора записи папки с идентификатором записи другой папки. - person Dmitry Streblechenko; 02.06.2010
comment
Спасибо за совет. Я их сравнивал с ==. Исправлено это сейчас. - person Matt Jacobsen; 02.06.2010