【发布时间】:2011-08-23 08:25:16
【问题描述】:
我正在尝试从 Outlook COM 插件中查询 MAPI 收件人的 Active Directory 属性。这是我第一次处理 AD 查询,到目前为止我想出的唯一方法似乎并不完全理想,所以如果在我继续实施该方法之前,有更多经验的人能加入进来,那就太好了.
所以,这就是我想出的:
- 读取收件人
PR_EMAIL_ADDRESS_WMAPI 属性的值。 - 使用
IDirectorySearch查找其legacyExchangeDN属性与该值匹配的LDAP 条目。
这看起来确实很简单,并且概念验证正在发挥作用,但是:
- 我已经有一个唯一的 ID - 为什么我必须进行实际的搜索?不应该有某种方式直接访问 AD 用户对象,例如通过以某种方式使用我掌握的有关收件人的信息来构建一个 LDAP 路径,我可以简单地将其传递给
ADsGetObject()? - 属性名称中的“旧版”一词暗示这可能不是一个好的长期策略。
- 实际上上面的列表中缺少一个步骤:在我可以使用
IDirectorySearch之前,我需要确定要搜索的根容器。现在我正在查询“LDAP://rootDSE”,然后请求“defaultNamingContext”属性来制定一个新的查询。这是普遍安全的吗?例如,当我的插件的 Outlook 2010 主机连接到多个不同的 Exchange 服务器并且我需要查询的收件人不是来自默认服务器时,这是否也有效?
FWIW,我正在使用出色的 Redemption 库来访问扩展 MAPI 层,所以我实际上并没有使用 IMailUser,而是使用 IAddressEntry。因此,如果有更好的方法来做我正在尝试做的内置该库的事情,请随时提出建议。
【问题讨论】:
标签: active-directory ldap exchange-server mapi