【VBA】CODを利用してメールを送信する

Outlookが無くても
VBAからメールを送信できます!

CODを利用することで、
メールを送信できます!

PR

前提

・CDO(Microsoft Collaboration Data Objects)を使用します。
 ※CODはWindowsに標準で備わっています。インストールや設定は不要です。

・今回は例として、送信元をGmailのメールアドレスにします。
 ※VBAからGmailを使用できるように、Googleアカウントのセキュリティ設定を変更します。

・送信先はどこでも良いです。
 ※今回はキャリアのメールアドレスへ送信します。

Outlookを使用しないため、Outlookが無くともメールを送信できます。
※特別なソフトウェア(メーラー)が無くてもメールを送信できます。

PR

準備

VBAからGmailを使用できるように、Googleアカウントのセキュリティの設定を変更します。
※Gmailを使用しない場合、この手順は不要です。

変更手順を以下に記載します。

変更手順①

Googleアカウントへアクセスして、左側にある「セキュリティ」をクリックする。

Googleアカウントの「セキュリティ」
Googleアカウントの「セキュリティ」


変更手順②

「安全性の低いアプリのアクセス」を「オフ」→「オン」へ変更する。

「安全性の低いアプリのアクセス」を「オン」へ変更
「安全性の低いアプリのアクセス」を「オン」へ変更

VBAからメールを送信できることを確認した後、上記のセキュリティ設定を元に戻しましょう(オフに戻しましょう)。
※セキュリティは高い方が安心のため。オフが推奨されているため。

PR

VBAコード

Option Explicit

Sub sendMail()
    
    Dim objMail As Object
    Dim fromMail As String
    Dim tomMail As String
    Dim subject As String
    Dim body As String
    Dim strConfigurationField  As String
    
    'CODオブジェクトを取得
    Set objMail = CreateObject("CDO.Message")
    
    '送信元を指定
    fromMail = "XXXXXX@gmail.com"
    '宛先を指定
    tomMail = "XXXXXX@XXX.XXX.XXX"
    '件名を指定
    subject = "テスト"
    '本文を指定
    body = "テストメールです"
    
    With objMail
        '送信元
        .From = fromMail
        '宛先
        .to = tomMail
        '件名
        .subject = subject
        '本文
        .TextBody = body
        '文字コード
        .TextBodyPart.Charset = "ISO-2022-JP"
    End With
    
    strConfigurationField = "http://schemas.microsoft.com/cdo/configuration/"
    
    With objMail.Configuration.Fields
        '認証方法
        '┗1:Basic認証
        .Item(strConfigurationField & "smtpauthenticate") = 1
        '使用するのSMTPサーバの種類
        '┗1:内部のSMTPサーバ
        '┗2:外部のSMTPサーバ
        .Item(strConfigurationField & "sendusing") = 2
        'SMTPサーバ
        .Item(strConfigurationField & "smtpserver") = "smtp.googlemail.com"
        'STMPサーバのポート番号
        .Item(strConfigurationField & "smtpserverport") = 465
        'SSLを許可
        .Item(strConfigurationField & "smtpusessl") = True
        'SMTPサーバのユーザー名
        .Item(strConfigurationField & "sendusername") = fromMail
        'SMTPサーバのパスワード
        .Item(strConfigurationField & "sendpassword") = "XXXXXX"
        '設定を更新
        .Update
    End With
    
    '送信
    objMail.Send
    
    '後片づけ
    Set objMail = Nothing
    
End Sub

「送信元」に自身のメールアドレスを指定します(16行目)。

「宛先」に相手のメールアドレスを指定します(18行目)。

「使用するのSMTPサーバの種類」は、環境に合わせて修正してください(46行目)。
※上記は「2:外部のSMTPサーバ」にしています。

「SMTPサーバ」と「STMPサーバのポート番号」は、環境に合わせて修正してください(48、50行目)。
※上記は「smtp.googlemail.com」と「465」にしています。

「SMTPサーバのパスワード」を指定します(56行目)。
※「SMTPサーバのユーザー名」には「送信元(=自身のメールアドレス)」を設定します。

PR

実行結果

メールを送信できました。
※今回はキャリアのメールアドレスへ送信して、スマホで受信しました。

メールを受信した画面
メールを受信した画面
PR

参考

Outlookを使用してメールを送信することもできます。

詳細は以下の記事をご確認ください。

タイトルとURLをコピーしました