Сопоставление отображаемого имени с адресом Email
В этом разделе показан пример кода в Visual Basic для приложений (VBA), который принимает отображаемое имя и пытается сопоставить его с адресом электронной почты, известным системе обмена сообщениями в текущем сеансе.
Для каждого сеанса Outlook поставщик транспорта определяет набор контейнеров адресной книги, в которые система обмена сообщениями может доставлять сообщения. Каждый контейнер адресной книги соответствует списку адресов в Outlook. Если отображаемое имя определено в наборе контейнеров адресной книги, отображаемое имя можно разрешить в текущем сеансе, и в списке адресов есть запись, которая сопоставляется с этим отображаемым именем. Обратите внимание, что записи в списке адресов могут быть различных типов, включая пользователя Exchange и список рассылки Exchange.
В этом примере кода функция ResolveDisplayNameToSMTP
использует отображаемое имя "Dan Wilson" в качестве примера. Сначала он пытается убедиться, что отображаемое имя определено в списке адресов, создав объект Recipient на основе этого отображаемого имени, а затем вызвав Recipient.Resolve. Если имя разрешено, использует ResolveDisplayNameToSMTP
объект AddressEntry , сопоставленный с объектом Recipient , чтобы получить тип и, если возможно, адрес электронной почты:
Если тип объекта AddressEntry является пользователем Exchange,
ResolveDisplayNameToSMTP
вызывает AddressEntry.GetExchangeUser для получения соответствующего объекта ExchangeUser . ExchangeUser.PrimarySmtpAddress предоставляет адрес электронной почты, который сопоставляется с отображаемым именем.Если объект AddressEntry является списком рассылки Exchange,
ResolveDisplayNameToSMTP
вызывает AddressEntry.GetExchangeDistributionList для получения объекта ExchangeDistributionList . ExchangeDistributionList.PrimarySmtpAddress предоставляет адрес электронной почты, который сопоставляется с отображаемым именем.
Sub ResolveDisplayNameToSMTP()
Dim oRecip As Outlook.Recipient
Dim oEU As Outlook.ExchangeUser
Dim oEDL As Outlook.ExchangeDistributionList
Set oRecip = Application.Session.CreateRecipient("Dan Wilson")
oRecip.Resolve
If oRecip.Resolved Then
Select Case oRecip.AddressEntry.AddressEntryUserType
Case OlAddressEntryUserType.olExchangeUserAddressEntry
Set oEU = oRecip.AddressEntry.GetExchangeUser
If Not (oEU Is Nothing) Then
Debug.Print oEU.PrimarySmtpAddress
End If
Case OlAddressEntryUserType.olExchangeDistributionListAddressEntry
Set oEDL = oRecip.AddressEntry.GetExchangeDistributionList
If Not (oEDL Is Nothing) Then
Debug.Print oEDL.PrimarySmtpAddress
End If
End Select
End If
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.