アルパカのメモ

差出人のメールアドレスを取得する

概要

受信したメール (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