この連載では、Windows Script Host(以降、WSH)を使って、日常に役立つさまざまなスクリプトを紹介しています。スクリプトを利用しつつ、その中で使われているさまざまなオブジェクト(機能)を理解していきましょう。時にはちょっと難しいコードが登場することもあるかもしれませんが、あまりひと所に捉われることなく、むしろスクリプトの便利さや、実際にプログラミングすることの楽しさの方を、少しでも感じて頂ければと思っています。
ゼロからはじめるWindows Script Host - 基本編
ゼロからはじめるWindows Script Host - テキスト読み書き編
ゼロからはじめるWindows Script Host - Excel連携編
ゼロからはじめるWindows Script Host - ファイルシステム編
ゼロからはじめるWindows Script Host - ショートカット編
さて、連載第6回となる今回は、メール送信編。残念ながら、WSHは標準ではメール送信のための機能は持っていませんが、Basp21という外部コンポーネントをインストールすることで、ごく手軽にメールを送信することができます。今回は、このBasp21コンポーネントを利用して、あらかじめ用意しておいたメールアドレスのリスト(テキストファイル)に基づいて、メールを自動送信するスクリプトを作成してみます。サンプルコードを通じて、外部コンポーネントを導入/利用する方法、また、Basp21の基本的な用法について理解してみましょう。
Basp21コンポーネントのインストール方法
Basp21コンポーネントは、馬場達夫氏が作成したフリーウェアのコンポーネントです。製品版としてより高度なBasp21 Proも公開されていますが、本稿ではフリーで利用できるBasp21を利用することにします(フリー版でも商用利用、再配布は可能です)。Basp21というとメール送受信のコンポーネントというイメージを持つ方もいるようですが、その他、ファイルアップロードや文字コード変換、ファイル転送、カウンタなど、アプリケーション開発に役立つさまざまな機能を備えたコンポーネントです。
標準的なCOMコンポーネントですので、WSHはもちろん、Visual BasicやVBA(Visual Basic for Applications)、ASP(Active Server Pages)、.NET Frameworkなどなど、幅広いプログラミング環境から遍く利用できるのもうれしいポイントです。Basp21コンポーネントは、こちらのページから入手できます。
インストール方法もカンタン、ダウンロードしたBASP21-YYYY-MMDD.exe(YYYY-MMDDには日付)をダブルクリックして、インストーラを実行するだけです。本稿では、2003年2月11日のバージョンを利用しています。
メールを自動送信するための準備
それではさっそく、具体的なサンプルを見ていくことにしましょう。本稿のサンプルを動作するにあたっては、あらかじめ以下のようなデータファイルを用意しておく必要があります。適宜、内容を自分の環境に応じて差し替えて利用してください。まず、mail_to.dat
は配信リストで、宛先のアドレスと宛先名をタブ区切りのテキストとして表現しています。
mail_to.dat
customer1@examples.co.jp 山田凜生
customer2@examples.co.jp 掛谷奈美
customer3@examples.co.jp 日尾有宏
customer4@examples.co.jp 横塚利津子
customer5@examples.co.jp 小島聡
そして、mail_body.dat
は、メールの本文を表します。自由な形式でテキストを入力できますが、もしも配信リスト(mail_to.dat
)にある宛先名を本文にも埋め込みたい場合には、#TO_NAME#という文字列を埋め込みたい場所に指定するようにしてください(*)。これによって、実行時に宛先名が埋め込まれるようになります。いわゆる変数のようなものだと思って頂いても良いでしょう。
*)#TO_NAME#という「変数」は、後述するようにスクリプト側の記述と整合されていればどんな値でも構いません。スクリプトを理解した後は、変数を変えたり、増やしてみたり、自分でもカスタマイズしてみると良いでしょう。
mail_body.dat
#TO_NAME#さま:
【WINGS News 2009年10月号】
WINGS Newsの購読を停止したい方は、本レター末尾の説明を参照下さい
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
■□■ 月 刊 W I N G S http://www.wings.msn.to/
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
...後略...