Outlook API 启用邮件与邮箱用户
Outlook API mail enabled vs mailbox user
一个非常微妙的问题,也许是特定于环境的。我正在尝试使用 Outlook 2010 API 来区分邮箱用户和启用邮件的用户。我们在 Notes 到 Exchange 的迁移过程中使用 Dell Quest 迁移工具,这是一个流动的项目。仍处于原型阶段,因此使用 VB 宏来实现最终将在 C# 中交付的内容。
上周,我使用了检查“myRecipient.AddressEntry.AddressEntryUserType <> olExchangeUserAddressEntry”,其中 myRecipient 是 myItem.Recpients 列表的一部分,其中 myItem 是从 ActiveInspector.CurrentItem电子邮件项目。据推测,共存人员对 Active Directory 复制做了一些更改,现在每个人都显示为 Exchange 用户,甚至未迁移到 Exchange 用户。 Microsoft 文档似乎说 olExchangeUserAddressEntry 表示 "user is in GAL".
在 Outlook 2010 GAL UI 中(在单击“收件人”按钮后选择收件人时),我看到了有关已启用邮件的用户和邮箱用户的视觉指示器。已启用邮件的用户的图标中有一个地球。邮箱用户没有。知道我需要访问什么 属性 才能在迁移环境中区分邮箱用户和启用邮件的用户吗?
我想保留在 Outlook API 中,但想知道这个查询如何实现,或者是否需要添加 AD API。
谢谢,
杰森
使用 PR_DISPLAY_TYPE
(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x39000003
)属性。启用邮箱的用户是 DT_MAILUSER
(0) 与 DT_REMOTE_MAILUSER
(6)。可以使用 AddressEntry.PropertyAccessor.GetProperty
.
访问 属性
使用 OutlookSpy 查看 GAL 对象(我是其作者 - 单击 IAddrBook、OpenRootContainer | GetHierarchyTable 等)
希望我遵守协议,但很难在之前的帖子中添加评论。德米特里的建议一针见血
当前代码:
For Each myRecipient In myItem.Recipients
'Simple "Exchange User" interrogation worked last Thursday
Dim test1 As Boolean
test1 = myRecipient.AddressEntry.AddressEntryUserType <> olExchangeUserAddressEntry
Dim test2 As Boolean
Dim myAccessor As PropertyAccessor
Set myAccessor = myRecipient.PropertyAccessor
If Not test1 Then
myDisplayType = myAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39000003")
test2 = myDisplayType <> 0 'Not an Exchange user
Else
test2 = False
End If
正在尝试找到更好的常量来测试 myDisplayType,但目前已经足够好了。谢谢,德米特里。你表现出了很好的专业知识。
此致,
杰森
一个非常微妙的问题,也许是特定于环境的。我正在尝试使用 Outlook 2010 API 来区分邮箱用户和启用邮件的用户。我们在 Notes 到 Exchange 的迁移过程中使用 Dell Quest 迁移工具,这是一个流动的项目。仍处于原型阶段,因此使用 VB 宏来实现最终将在 C# 中交付的内容。
上周,我使用了检查“myRecipient.AddressEntry.AddressEntryUserType <> olExchangeUserAddressEntry”,其中 myRecipient 是 myItem.Recpients 列表的一部分,其中 myItem 是从 ActiveInspector.CurrentItem电子邮件项目。据推测,共存人员对 Active Directory 复制做了一些更改,现在每个人都显示为 Exchange 用户,甚至未迁移到 Exchange 用户。 Microsoft 文档似乎说 olExchangeUserAddressEntry 表示 "user is in GAL".
在 Outlook 2010 GAL UI 中(在单击“收件人”按钮后选择收件人时),我看到了有关已启用邮件的用户和邮箱用户的视觉指示器。已启用邮件的用户的图标中有一个地球。邮箱用户没有。知道我需要访问什么 属性 才能在迁移环境中区分邮箱用户和启用邮件的用户吗?
我想保留在 Outlook API 中,但想知道这个查询如何实现,或者是否需要添加 AD API。
谢谢, 杰森
使用 PR_DISPLAY_TYPE
(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x39000003
)属性。启用邮箱的用户是 DT_MAILUSER
(0) 与 DT_REMOTE_MAILUSER
(6)。可以使用 AddressEntry.PropertyAccessor.GetProperty
.
使用 OutlookSpy 查看 GAL 对象(我是其作者 - 单击 IAddrBook、OpenRootContainer | GetHierarchyTable 等)
希望我遵守协议,但很难在之前的帖子中添加评论。德米特里的建议一针见血
当前代码:
For Each myRecipient In myItem.Recipients
'Simple "Exchange User" interrogation worked last Thursday
Dim test1 As Boolean
test1 = myRecipient.AddressEntry.AddressEntryUserType <> olExchangeUserAddressEntry
Dim test2 As Boolean
Dim myAccessor As PropertyAccessor
Set myAccessor = myRecipient.PropertyAccessor
If Not test1 Then
myDisplayType = myAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39000003")
test2 = myDisplayType <> 0 'Not an Exchange user
Else
test2 = False
End If
正在尝试找到更好的常量来测试 myDisplayType,但目前已经足够好了。谢谢,德米特里。你表现出了很好的专业知识。
此致, 杰森