差出人のメールアドレスを取得する
calendar_today
概要
受信したメール (MailItem) の差出人のメールアドレスを取得するには、SenderEmailAddress プロパティを参照する。 ただし、Exchange を使用してる かつ 差出人が同じ組織内のユーザーの場合は、メールアドレスの形式が DN 形式 (X500形式) になる。
例 :/o=<組織名>/ou=<管理グループ名>/cn=Recipients/cn=<エイリアス>
この場合は、PropertyAccessor オブジェクトを使用する必要がある。
参考:Get the SMTP address of the sender of a mail item | Microsoft Docs
差出人の SenderEmailType が “EX” の場合、その人は同じ組織内の Exchange 利用者ということになる。 下記サンプルでは、その場合に PropertyAccessor オブジェクトを使用してメールアドレスを取得する。
サンプル
' ----------------------------------------
' 送信者のメールアドレスを取得する
' ----------------------------------------
Private Function GetSenderEmailAddress(ByRef oItem As MailItem) As String
Dim PR_SMTP_ADDRESS As String
Dim oSender As AddressEntry
Dim oExUser As ExchangeUser
PR_SMTP_ADDRESS = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
' Exchange 以外
If oItem.SenderEmailType <> "EX" Then
GetSenderEmailAddress = oItem.SenderEmailAddress
Exit Function
End If
Set oSender = oItem.Sender
If oSender.AddressEntryUserType = olExchangeUserAddressEntry _
Or oSender.AddressEntryUserType = olExchangeRemoteUserAddressEntry Then
Set oExUser = oSender.GetExchangeUser
GetSenderEmailAddress = oExUser.PrimarySmtpAddress
Exit Function
End If
GetSenderEmailAddress = oSender.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)
End Function