Outlookでメールの作成、送信

Outlookのメールを作成、送信をする。

VBAでOutlookのメールを作成、送信させる処理になります。

メール形式、重要度などのプロパティは下表の設定値を指定することで設定できます。
またSentOnBehalfOfNameプロパティを利用すれば送信者の代理送信の設定が可能です。

設定プロパティ名設定値
メール形式BodyFormat1:テキスト型、2:HTML型、3:リッチテキスト型
重要度Importance0:低、1:中(規定値)、2:高
代理送信SentOnBehalfOfName送信者名の変更(代理送信)

添付する際は、AttachmentsコレクションのAddメソッドを利用してファイルの添付も可能ですが、
添付ファイルを付けない場合にこのメソッドを実行するとエラーとなります。
また、指定のパスにファイルが存在しない場合もエラーとなります。

サンプルコードでは誤って実行した時に誤送信しないようにSendメソッドをコメントアウトしています。その代わりDispalyメソッドで代用してメールの確認をするようにしています。

動作確認
Windows10/Excel2016:○
Windows11/Excel2024:ー(Outlook未使用のため、未確認)

 ●メールの作成と送信

'*********************************************************************
' メール作成・送信(Outlook)
'*********************************************************************
Sub sendMail_Outlook()
    
    'アプリケーションオブジェクト
    Dim oMailApp As Object
    Set oMailApp = CreateObject("Outlook.Application")
    
    'メール作成
    Dim oMail As Object
    Set oMail = oMailApp.CreateItem(0)
    
    '形式(1:テキスト型、2:HTML型、3:リッチテキスト型)
    oMail.BodyFormat = 1
                
    '重要度(0:低、1:中(規定値)、2:高)
    oMail.Importance = 2
                
    '宛先
    oMail.To = "Send@mail.test.com"    'TO
    oMail.cc = "XXXX@mail.test.com"    'CC
    oMail.bcc = "XXX@mail.test.com"    'BCC
        
    '件名
    oMail.Subject = "xxxxxxのお知らせ"
        
    '本文
    oMail.Body = "テスト送信" & vbCrLf & "テスト送信2行目"
        
    '添付ファイル(複数あればそれぞれAddで追加)
    oMail.Attachments.Add "C:\VBA\mail\添付ファイル1.txt"
    oMail.Attachments.Add "C:\VBA\mail\添付ファイル2.txt"
        
    '送信実行
    '※サンプルでは誤送信しないようにSendメソッドをコメントアウトしています。
    ''oMail.Send
     oMail.Display  'メール表示 ※Sendの代わりに使用

    Set oMail = Nothing
    Set oMailApp = Nothing
    
End Sub

 ■実行結果

作成されたメール


 ●メールの代理送信

'*********************************************************************
' メール送信(Outlook)
'  ※差出人名変更(代理送信)
'*********************************************************************
Sub sendMail_Outlook_Behalf()
    
    'アプリケーションオブジェクト
    Dim oMailApp As Object
    Set oMailApp = CreateObject("Outlook.Application")
    
    'メール作成
    Dim oMail As Object
    Set oMail = oMailApp.CreateItem(0)
                
                
    '差出人設定(代理送信)
    oMail.SentOnBehalfOfName = "あいうえお <aaa@aaa.com>"
    
    '形式(1:テキスト型、2:HTML型、3:リッチテキスト型)
    oMail.BodyFormat = 2
    
    '宛先(TO)
    oMail.To = "Send@mail.test.com"
        
    '件名
    oMail.Subject = "xxxxxxのお知らせ"
        
    '本文
    oMail.Body = "テスト送信"
        
    '送信実行
    '※サンプルでは誤送信しないようにSendメソッドをコメントアウトしています。
    ''oMail.Send
     oMail.Display  'メール表示 ※Sendの代わりに使用

    Set oMail = Nothing
    Set oMailApp = Nothing
    
End Sub

 ■実行結果

差出人が設定された文字列となる。

なお代理送信で送信したメールをOutlookで受信した場合は下記のように表示されます。

黒塗りのところは実際の送信アドレスが表示されます。