首页 > 解决方案 > C++ MAPI。管理用户和分发列表的 PR_ENTRYID

问题描述

在我的 C++ 应用程序中,我有一个带有联系人的 IMAPITable。

在方法 1 中,我搜索联系人并获取联系人属性,例如 PR_DISPLAY_NAME_W ir PR_ENTRYID。在方法 2 中,我必须收到一个 ID,并且我必须打开此条目才能获取另一个属性。例如,对于联系人,我需要 PR_ADDRTYPE_W,对于分发列表,我需要其所有成员的地址。

PR_ENTRYID 是识别联系人/distList(在 1 中返回 id)并在需要时轻松找到(2)的最佳方法吗?我认为它是,因为它是一个唯一值,并且我看到 pAddressBook->OpenEntry() 可以帮助我,将 entryID 作为参数传递。

首先,它是否正确?我可以直接从地址簿中找到联系人(使用 entryId)吗?在我的 AB 中,我有 10 个列表,联系人在其中之一

我的问题是我不知道如何管理这个 ID,在我拥有的方法 1 中返回什么:

pRows->aRow->lpProps[abPR_ENTRYID]

以及如何在方法 2 中使用我需要的 OpenEntry

    ULONG cbEntryID
    LPENTRYID lpEntryID

hr = pAddressBook->OpenEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,       // nullptr
  ULONG ulFlags,        // 0L
  ULONG FAR * lpulObjType,
  LPUNKNOWN FAR * lppUnk    // In my case 
);

关于返回值 (lppUnk),对于联系人,它是 IMailUser*,对于分发列表,是 IDistList*?

恐怕这一刻我有点失落了……

有什么帮助吗?

谢谢,迭戈

标签: outlookmapi

解决方案


lpulObjType(out) 代码中上面的参数将告诉您返回的对象类型是什么 - MAPI_MAILUSERvs MAPI_DISTLIST


推荐阅读