Outlookで指定したMailItemオブジェクトに対する、送信者(From), TO, CCのメールアドレスを取得するモジュールを作成しましたので、備忘録としてメモします。
参考URL①:メールの内容と To および Cc のアドレスを Excel ファイルに書き出すマクロ
参考URL②:VB.NETのOutlook.MailItemを利用して送信者の電子メールアドレスを取得する方法
参考URL③:受信者の電子メールアドレスを取得する
' メールの送信者(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③:受信者の電子メールアドレスを取得する
コメント