Mapear um nome de exibição para um endereço Email
Este tópico mostra um exemplo de código em Visual Basic for Applications (VBA) que usa um nome de exibição e tenta mapeá-lo para um endereço de email conhecido pelo sistema de mensagens na sessão atual.
Para cada sessão do Outlook, o provedor de transporte define um conjunto de contêineres de catálogo de endereços para os quais o sistema de mensagens pode entregar mensagens. Cada contêiner de catálogo de endereços corresponde a uma lista de endereços no Outlook. Se um nome de exibição for definido no conjunto de contêineres do catálogo de endereços, o nome da exibição poderá ser resolvido na sessão atual e haverá uma entrada em uma lista de endereços que mapeia para esse nome de exibição. Observe que as entradas em uma lista de endereços podem ser de vários tipos, incluindo um usuário do Exchange e uma lista de distribuição do Exchange.
Neste exemplo de código, a função ResolveDisplayNameToSMTP
usa o nome de exibição "Dan Wilson" como exemplo. Primeiro, ele tenta verificar se o nome de exibição está definido em uma lista de endereços criando um objeto Destinatário com base nesse nome de exibição e chamando Destinatário.Resolver. Se o nome for resolvido, use ResolveDisplayNameToSMTP
o objeto AddressEntry mapeado para o objeto Destinatário para obter ainda mais o tipo e, se possível, o endereço de email:
Se o tipo do objeto AddressEntry for um usuário do Exchange,
ResolveDisplayNameToSMTP
chamará AddressEntry.GetExchangeUser para obter o objeto ExchangeUser correspondente. ExchangeUser.PrimarySmtpAddress fornece o endereço de email que mapeia para o nome da exibição.Se o objeto AddressEntry for uma lista de distribuição do Exchange,
ResolveDisplayNameToSMTP
chamará AddressEntry.GetExchangeDistributionList para obter um objeto ExchangeDistributionList . ExchangeDistributionList.PrimarySmtpAddress fornece o endereço de email que mapeia para o nome de exibição.
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
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.