Поделиться через


Сопоставление отображаемого имени с адресом 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 и обратная связь.