配信リストに従ってメールを自動送信する
データベースが準備できたら、同じフォルダに以下のようなスクリプトを用意しましょう。パス部分は、適宜、自分の環境に合わせて書き換える必要があります。
[リスト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