首页 文章

已启用Outlook API邮件与邮箱用户

提问于
浏览
1

一个非常微妙的问题,也许是特定的环境 . 我正在尝试使用Outlook 2010 API从启用邮件的用户中识别邮箱用户 . 我们在Notes to Exchange迁移期间使用Dell Quest迁移工具,它是一个流动的项目 . 仍处于原型阶段,因此使用VB宏来最终将在C#中提供 .

上周,我使用了检查“myRecipient.AddressEntry.AddressEntryUserType <> olExchangeUserAddressEntry”,其中myRecipient是myItem.Recpients列表的一部分,其中myItem是从电子邮件项的ActiveInspector.CurrentItem中检索的 . 据推测,共存人员对Active Directory复制进行了一些更改,现在每个人都显示为Exchange用户,甚至未迁移到Exchange用户 . Microsoft文档似乎说olExchangeUserAddressEntry意味着“用户在GAL中” .

在Outlook 2010 GAL UI中(单击“收件人”按钮后选择收件人时),我看到有关已启用邮件的用户与邮箱用户的可视指示器 . 已启用邮件的用户在图标中有一个地球仪 . 邮箱用户没有 . 知道我需要访问哪些属性来区分邮箱用户和迁移环境中启用邮件的用户?

我想保留在Outlook API中,但想知道这个查询的可能性,或者是否需要添加AD API .

谢谢你,杰森

2 回答

  • 1

    使用 PR_DISPLAY_TYPE (DASL名称 http://schemas.microsoft.com/mapi/proptag/0x39000003 )属性 . 启用邮箱的用户是 DT_MAILUSER (0)vs DT_REMOTE_MAILUSER (6) . 可以使用AddressEntry.PropertyAccessor.GetProperty访问该属性 .

    使用OutlookSpy查看GAL对象(单击IAddrBook,OpenRootComtainer | GetHierarchyTable等)

  • 0

    希望我遵守协议,但努力为之前的帖子添加评论 . 德米特里用他的建议击中了头上的钉子 .

    当前代码:

    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,但现在已经足够好了 . 谢谢,德米特里 . 你展示了很棒的专业知

    问候,杰森

相关问题