将显示名称映射到Email地址

本主题演示Visual Basic for Applications (VBA) 中的代码示例,该示例采用显示名称,并尝试将其映射到当前会话中消息系统已知的电子邮件地址。

对于每个 Outlook 会话,传输提供程序都会定义一组通讯簿容器,邮件系统可将邮件传送到这些容器中。 每个通讯簿容器与 Outlook 中的一个地址列表相对应。 如果在通讯簿容器集中定义了显示名称,则可以在当前会话中解析显示名称,并且地址列表中存在映射到此显示名称的条目。 请注意,地址列表中的条目可以有多种类型,包括 Exchange 用户和 Exchange 通讯组列表。

在此代码示例中,函数 ResolveDisplayNameToSMTP 使用显示名称“Dan Wilson”作为示例。 它首先尝试验证是否在地址列表中定义了显示名称,方法是基于此显示名称创建 Recipient 对象,然后调用 Recipient.Resolve。 如果名称已解析,则ResolveDisplayNameToSMTP使用映射到 Recipient 对象的 AddressEntry 对象进一步获取类型以及电子邮件地址(如果可能):

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 支持和反馈,获取有关如何接收支持和提供反馈的指南。