表示名を 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 のサポートおよびフィードバックを参照してください。