配信リストに従ってメールを自動送信する

データベースが準備できたら、同じフォルダに以下のようなスクリプトを用意しましょう。パス部分は、適宜、自分の環境に合わせて書き換える必要があります。

[リスト02]mail_db.vbs

' スクリプトの動作に必要な設定情報
Const MAIL_BODY = "C:\tmp\mail\mail_body.dat"   ' メール本文のパス
Const SMTP = "smtp.xxxxx.ne.jp" ' SMTPサーバのホスト名
Const FROM = "WINGS News <CQW15204@nifty.com>"  ' 送信元アドレス
Const SUBJECT = "【WINGS News】「JavaScriptマスターブック」好評発売中"  ' 件名
Const FILES = ""    ' 添付ファイルのパス

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
    ' Basp21オブジェクトを生成
Set basp = WScript.CreateObject("Basp21")
    ' メール本文をまとめて読み込み、変数tmp_bodyに格納
tmp_body = fs.OpenTextFile(MAIL_BODY, 1, False).ReadAll()

    ' (1)ADODB.Connectionオブジェクトを生成する
Set db = WScript.CreateObject("ADODB.Connection")
    ' (2)データベースに接続する
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.Mode = 1
db.ConnectionString = "mail.mdb"
db.Open()
    ' (3)emailテーブルからすべてのレコードを取得
Set rs = db.Execute("SELECT * FROM email")
    ' (4)取得した結果セットから順にレコードを読み込み
Do While Not rs.EOF
    ' 宛先アドレスをセット
  to_address = rs("address")
    ' 本文をセット(#TO_NAME#を宛先名で置換)
  body = Replace(tmp_body, "#TO_NAME#", rs("nam"))
    ' 設定内容に従って、メール送信
  result = basp.SendMail(SMTP, to_address, FROM, SUBJECT, body, FILES)
    ' 戻り値が空の場合には送信成功と見なす
  If result = "" Then result = "送信成功"
    ' 結果を表示
  WScript.Echo(to_address & ":" & result)
    ' レコードポインタを次に移動
  rs.MoveNext
Loop
    ' (5)接続を切断
db.Close()

ここで、まずはサンプルの動作を確認しておきましょう。mail_db.vbsは、コマンドプロンプトから以下のようにコマンドを入力することで、実行できます。

> cscript C:\tmp\mail\mail_db.vbs

メールの送信結果(成功時)