Получить список пользователей Exchange, подключенных к почтовому ящику - PullRequest
0 голосов
/ 23 января 2019

Мне нужно получить outlook-пользователей, которые могут получить доступ к общему почтовому ящику. Я могу получить пользовательские детали с кодом Excel-VBA, но эта задача выходит за мои пределы. Есть ли способ получить эту информацию программно? Я обычно делаю что-то вроде этого, но у объекта, который я использую, нет метода для возврата нужного мне значения. Любая помощь будет оценена.

Public Sub listUsers()
    Dim myolApp As Outlook.Application
    Dim myNameSpace As Namespace
    Dim myAddrList As AddressList
    Dim myAddrEntry As AddressEntry
    Dim whoIsThis As String
    Dim exchUser As Outlook.ExchangeUser

    Set myolApp = CreateObject("Outlook.Application")
    Set myNameSpace = myolApp.GetNamespace("MAPI")
    Set myAddrList = myNameSpace.AddressLists("Global Address List")

    Dim FullName As String, LastName As String, FirstName As String
    Dim HomeState As String, PhoneNum As String

    whoIsThis = "Doe, John"

    Set myAddrEntry = myAddrList.AddressEntries(whoIsThis)
    Set exchUser = myAddrEntry.GetExchangeUser

    If Not exchUser Is Nothing Then
        FirstName = exchUser.FirstName
        LastName = exchUser.LastName
        HomeState = exchUser.StateOrProvince
        PhoneNum = exchUser.BusinessTelephoneNumber
        test = exchUser.Alias
        lista2 = exchUser.Alias
        myemail = exchUser.Address
        myemail = exchUser.PrimarySmtpAddress        
        'etc...
    End If
End Sub

1 Ответ

0 голосов
/ 24 января 2019

Во-первых, вам лучше использовать Namespace.CreateRecipient / Recipient.Resolve / Recipient.AddressEntry вместо доступа к списку «Глобальный список адресов» (имя может быть локализовано).

Чтобы выяснить, какой пользовательЕсли у вас есть делегированный доступ к определенному почтовому ящику, вам нужно открыть свойство PR_EMS_AB_PUBLIC_DELEGATES как IMAPITable из объекта IMailUser, представляющего владельца почтового ящика.Это потребует расширенного MAPI (C ++ или Delphi), вы не можете сделать это из VBA.Если вы можете использовать Redemption , он предоставляет RDOAddressEntry .Delegates collection.Объект RDOAddressEntry можно получить из свойства RDOExchnageMailboxStore .Owner.Вы также можете использовать RDOExchangeMailboxStore .Delegates collection (используется EWS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...