[Scripting] | ||||||||||||||
テンプレートを元に複数のメールを一括配信する
|
||||||||||||||
|
解説 |
別稿のTIPS「配信リストを使ってメールをいっせいに配信する」では、メール配信用コンポーネントBasp21を利用することで、Excel上で管理されたメール・アドレスに対して、いっせいにメール送信を行う方法を紹介した。
しかしそこで紹介した方法には、いくつかの問題点が含まれていた。
1つに、メール送信に際して必要な件名や差出人、本文などのデータがすべてVBAのコードとしてハード・コーディングされていたため、メールの内容を変更するだけのためにもプログラマの手を介さなければならなかった。
またメール本文が固定的なテキストとして記述されていたため、例えば個々のメールにそれぞれのあて先を付加しようと思った場合にも対応することができなかった。
そこで本TIPSでは、メール送信に必要な情報を外部ファイル化すると同時に、メール本文に動的に変更可能な「変数」を含められるように改良してみよう。今回は、ExcelのVBA以外での例を示すため、メール・アドレスの管理ツールとしてAccessを利用し、メール送信用のコード(プログラム)としてはWSH(Windows Scripting Host)を使ってコーディングしてみたい。
それではさっそく、作成までの流れを見てみることにしよう。
作業手順 |
手順1―追加コンポーネント「Basp21」をインストールする
まずは、サンプル実行に必要な追加コンポーネント「Basp21」をインストールしておこう。Basp21についての詳細は、別TIPSの「配信リストを使ってメールをいっせいに配信する」で紹介しているので、参照していただきたい。Basp21のダウンロード先は、以下のとおりである。
- BASP21開発者の馬場達夫氏のWebサイト「Baba Centerfolds」(http://www.hi-ho.ne.jp/babaq/)
手順2―メール・アドレス管理用のAccessのデータベース・テーブルを用意する
メール・アドレス管理用のテーブルを、あらかじめAccessデータベース上に作成しておこう。データベースのファイル名は「mail.mdb」、テーブル名は「mail」とする。もちろん、ファイル名・テーブル名ともに自由に変更して構わないが、その場合には以下のコード中の該当個所も変更の必要があるので注意して欲しい。mailテーブルのレイアウトは以下のとおりである。定義したテーブル内には、適宜必要に応じて、配布先となるメール・アドレスをセットしておくこと。
フィールド名 | データ型(文字長) | 概要 |
テキスト型(255) | 電子メール・アドレス(主キーに設定) | |
name | テキスト型(50) | 受信者名 |
mailテーブルのフィールド・レイアウト | ||
emailには送信先の電子メール・アドレスを、nameにはそのメール・アドレスの表示名をそれぞれセットする。 |
手順3―メール送信用の基本データを用意する
次に、メールを送信する際に使用する基本データを、テキスト・ファイルとして用意しておこう。ファイル名はmail.datとする。データベース・ファイルと同様に、ファイル名は自由に変更して構わないが、その場合にはコード中の該当個所も変更の必要があるので注意して欲しい。
mail.datに含まれる基本データのフォーマットは以下のとおりである。
ファイルmail.dat: |
このファイルの先頭3行の内容は常にこの順番で記述していただきたい。それぞれ、送信に使用するメール・サーバ(SMTPサーバ)、メールの送信元に使われる「表示名」と「メール・アドレス」(メール・アドレスは"<"と">"で囲むこと)、そしてメールの件名(サブジェクト)である。4行目以降はメールの本文であり、4行目からファイルの最後までがメールの本文として送信される。
メール本文(mail.datの4行目以降)には「$フィールド名$」の形式で変数を埋め込むことができる。例えば、「$name$」はmailテーブル内のnameフィールドの値で実行時に置き換えられる。本サンプルでは、このように本文中に変数を含めることで、受信者ごとに変更する情報を、データベース内で一元管理することができる。変数を追加した場合には、データベース上にも対応するフィールドを追加するだけでよい。
なお、もしも「$フィールド名$」に対応するフィールドがデータベースの該当テーブル上に存在しない場合、変数は記述されたそのままの形式で残ってしまうので注意すること。
手順4―テキスト・エディタでスクリプトのコードを入力する
最後に、mail.dat、mail.mdbからメール送信用のデータを取得し、実際のメール送信処理を行うためのWSHコードを記述してみよう。
テキスト・エディタ(メモ帳でもなんでもよい)を開き、以下のコードを入力してほしい。なお、引用符(')で始まる行はコードの意味を解説するためのコメント部分なので、省略しても構わない。
ファイル:mail.wsf |
- サンプル・ファイルのダウンロード
(注:サンプルmail.zipをダウンロードするには、上のリンクを右クリックして、mail.zipというファイル名で保存する。mail.zipは、mail.wsf/mail.mdb/mail.datの3ファイルを含んでいるが、すべて同一のフォルダ上に展開する必要がある。なお間違えて送信してしまわないように、このサンプル・ファイルでは、メール・サーバ名や差出人名フィールドなどは無効なデータになっているので、必ず各自の環境に合わせて変更してから利用すること)
WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「mail.wsf」という名前で、ローカルPC上の適当なフォルダ中に保存しておく。
手順5―WSHのコードを実行する
mail.wsfを実行するには、エクスプローラなどからmail.wsfをダブルクリックするだけだ。その際、mail.datとmail.mdbがmail.wsfと同一のフォルダ中に存在しない場合や、SMTPサーバが指定されていない場合などには、正しく動作しない可能性があるので、注意すること。mail.mdbにセットしたあて先に、以下のようなメールが届いていれば成功だ。
一斉配信されたメールを受信したところ | |||
本文冒頭のあて先に、データベースで管理された受信者名がセットされていることが確認できる。 | |||
|
なお、送信者側でメール送信の成否を確認したい場合には、同一フォルダ上にsend.logというログ・ファイルが生成されているはずである。これを参照することで、送信時に発生したエラーの有無を確認することができる。
送信時にBasp21によって記録されたログ情報 |
送信した時刻と使用したメール・サーバ、送信先と送信元のメール・アドレス、サブジェクトなどが記録されている。 |
ただし、Basp21が管理する送信の成否は、あくまでSMTPサーバに対して送信処理を発行するまでの間である点に注意すること。あて先が不明であったり、相手のメールボックスの許容サイズが受信上限を超えていた、などのケースで不達となったメールについては、メールを中継しているSMTPサーバから、mail.datに記述された「送信者アドレス」に対してエラーが返される。
この記事と関連性の高い別の記事
- PowerShellでテンプレートを使ってメールを一斉配信する(TIPS)
- 配信リストを使ってメールをいっせいに配信する(TIPS)
- 間違いメールの発信を予防する方法(TIPS)
- WSHからExcelファイルの設定情報を読み込む(TIPS)
- 大きなサイズのファイルを分割して送受信する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|