Outlookで指定したMailItemオブジェクトに対する、送信者(From), TO, CCのメールアドレスを取得するモジュールを作成しましたので、備忘録としてメモします。

' メールの送信者(From)、TO、CCのメールアドレスの取得(OutlookVBA)
' mItem  : MailItem
' MFrom  : 送信者のメールアドレス(戻り値)
' MTo    : 宛先のメールアドレス(戻り値)
' MCc    : CCのメールアドレス (戻り値)
' 戻り値 : 0 = 正常終了
'          1 = エラー
' 注:mItemは、MailItemである必要があります。
'     MTo, MCcは、複数のアドレスがある場合は、";"で繋いだ
'     文字列になります。
'
Public Function GetMailFromToCC(mItem As MailItem, _
                       ByRef MFrom As String, ByRef MTo As String, ByRef MCc As String) As Long
    Dim recips As Recipients
    Dim recip As Recipient
    Dim pa As PropertyAccessor
    Dim s As String

    Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"

    On Error GoTo ErrProc

    If mItem.SenderEmailType = "EX" Then    ' Exchangeメールアドレスの場合
        MFrom = mItem.Sender.GetExchangeUser.PrimarySmtpAddress
    Else
        MFrom = mItem.SenderEmailAddress
    End If

    MTo = "": MCc = ""
    Set recips = mItem.Recipients
    For Each recip In recips
        Set pa = recip.PropertyAccessor
        s = pa.GetProperty(PR_SMTP_ADDRESS)
        
        If recip.Type = olTo Then
            MTo = MTo & s & ";"
        Else
            MCc = MCc & s & ";"
        End If
    Next
    If Len(MTo) > 0 Then MTo = Left(MTo, Len(MTo) - 1)
    If Len(MCc) > 0 Then MCc = Left(MCc, Len(MCc) - 1)
    GoTo EndProc

ErrProc:
    GetMailFromToCC = 1
EndProc:
    Set pa = Nothing
    Set recips = Nothing
End Function



参考URL①:メールの内容と To および Cc のアドレスを Excel ファイルに書き出すマクロ
参考URL②:VB.NETのOutlook.MailItemを利用して送信者の電子メールアドレスを取得する方法
参考URL③:受信者の電子メールアドレスを取得する