將顯示名稱對應至Email位址
本主題示範 Visual Basic for Applications (VBA) 中的程式碼範例,該範例會採用顯示名稱,並嘗試將它對應至目前會話中訊息系統已知的電子郵件地址。
傳輸提供者會針對每個 Outlook 工作階段定義一組通訊錄容器,郵件傳送系統可將郵件傳遞至此容器。 每個通訊錄容器都會對應至 Outlook 中的一份通訊清單。 如果在通訊錄容器集合中定義了顯示名稱,則顯示名稱可以在目前的會話中解析,而且通訊清單中有一個專案對應至此顯示名稱。 請注意,通訊清單中的專案可以是各種類型,包括 Exchange 使用者和 Exchange 通訊群組清單。
在此程式碼範例中,函 ResolveDisplayNameToSMTP
式會使用顯示名稱 「Dan Wilson」 作為範例。 它會先嘗試根據此顯示名稱建立 Recipient 物件,然後呼叫 Recipient.Resolve,以確認顯示名稱已定義在通訊清單中。 如果名稱已解析,則 ResolveDisplayNameToSMTP
會使用對應至Recipient物件的AddressEntry物件進一步取得類型,並盡可能使用電子郵件地址:
如果 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 支援與意見反應。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應