NonSoft

VBSやVBAでメールを送信/受信する方法


 ち〜な〜み〜に〜

VBS(VB SCRIPT/WSH)やVBAで手軽にメールの送信や受信をする方法をご紹介します。

このサンプルではBASP21(Basp21.dllとBsmtp.dllをC:\Windowsにコピー)を使用しています。
あらかじめDLLをレジストリに登録するコマンド(Regsvr32.exe Basp21.dll)を実行する必要があります。

フリーのBASP21は32bit(x86)版です。
64bit(x64)環境(WindowsVista(Windows7/Windows8)以降)で32bit(x86)のBASP21をで使用する際は
32bit(x86)版のVBS(VB SCRIPT/WSH)を使用してください。

メール関係のその他のツールやサンプルソースはこちらです。
指令メール実行
メール受信時にプログラムを起動するサンプル(VB6)
メール送信(SMTP認証/POP認証)のサンプル(VB.NET)
メール送信(SMTPソケット通信)のサンプル(VB.NET)
メール受信(POP3ソケット通信)のサンプル(VB.NET)
メール受信(IMAPソケット通信)のサンプル(VB.NET)

★メール送信/受信サンプルソース
' --------------------------------------------------------------------
' メールを送信/受信するオブジェクトの生成
Set BASP21 = CreateObject("Basp21")

smtp_sv = "smtp.xxxx.com"
pop__sv = "pop.xxxx.com"
user_id = "USER__ID"
user_ps = "PASSWORD"
mail_to = "aaaa@xxxx.com"
mail_fr = "bbbb@xxxx.com"

' メール送信
rtn = BASP21.SendMail(smtp_sv, mail_to, mail_fr, _
    "メールのタイトル", "メールの本文", "")

' メール送信結果判定
If rtn = "" Then
    ' メール送信成功
    MsgBox "メール送信成功"
Else
    ' メール送信失敗
    MsgBox "メール送信失敗"
End If

' 受信メール有無チェック
rtn = BASP21.RcvMail(pop__sv, user_id, user_ps, "SAVD 1-1", "C:\Temp")

' 受信メール有無判定
If IsArray(rtn) Then
    ' 受信メール有り
    ' メール受信
    rtn2 = BASP21.ReadMail(rtn(0), "subject:from:date:", "C:\Temp")

    ' メール受信結果判定
    If IsArray(rtn2) Then
        ' メール受信成功
        MsgBox "メール受信成功:" & _
            rtn2(0) & "," & rtn2(1) & "," & rtn2(2) & "," & rtn2(3)
    Else
        ' メール受信失敗
        MsgBox "メール受信失敗"
    End If
Else
    ' 受信メール無し
    MsgBox "受信メール無し"
End If
' --------------------------------------------------------------------