2015.11.25 disconnect_everytime スイッチを追加
※動作の確かなものが欲しい場合、送信記録をわかりやすく残したい場合は、本記事のようなものでなく、ThunderbirdのMail Mergeアドオンを使いましょう。この記事で紹介するようなことに加え、条件分岐でメッセージ内容を変えるようなこともできます。これはよい。
Windows用の、メール送信プログラムです。
添付ファイルが送れるようにしたいなという意見を聞いたので、そんなことも可能にしてみました。
ダウンロードできるものは、Windows用バイナリです。python2.7で開発して、pyinstallerで実行ファイル化しました。
同サイトからソースも得られますし、すこし調整すればWindows以外でも動くはずです。
スクリプトをダウンロードして実行すると、下のようなGUIがあらわれます。(同時に黒いウィンドウが出ることもありますが、そっちは特に気にしないで。閉じずに放っておきましょう)
zipアーカイブを展開したあとで、ディレクトリ内に見つかる「batchmail.exe」が実行ファイルです。これをダブルクリック等して起動してください。
電子メール送信関係の設定ファイルは、config.txt です。あらかじめサンプルの設定ファイルが同梱されていますが、このままでは実際のメール送信はできませんので、お使いの環境にあわせてあらかじめ直しておく必要があるでしょう。
設定ファイルは、典型的な ini ファイルの形式に従います。
[smtp] interval=5 disconnect_everytime=1 #server=127.0.0.1 #port=25 #security=plain server=some.secure.mail.server port=587 security=starttls user=yourusername pass=yourpassword #server=some.secure.mail.server #port=465 #security=ssl #user=yourusername #pass=yourpassword
intervalは、複数のメールを出すときの、一通分ごとの時間間隔です。整数で、秒単位の設定をします。メールサーバーへの負荷を避けるために、極端に小さな値を設定しないでください。初期値は5(秒)です。
disconnect_everyoneを1にすると、メールを一通送るたびにサーバーとのセッションを切断します。メールサーバーとのセッション時間制限を超えてしまうような長いリストにメールを送るときに設定します。
serverとportは、それぞれ、送信するSMTPサーバーとポート番号です。
securityは、平文(plain)、SSL(ssl)、STARTTLS(starttls)のいずれかから選択します。userとpassは、メール送信にユーザー認証が必要な場合に設定してください。
「#」で始まる行はコメント行として無効になります。
プログラムの起動時の画面は下のようです。
※現在のバージョンでは、「添付ファイル」の入力欄はありません。かわりに本文中に添付用の目印を書きます。後述。
メール送信用のデータは、起動時は、サンプルとして極めて単純なものがセットされています。もちろんこのままではまともなメールにはなりませんので、適宜設定したり、CSVを取り込んだりして体裁を整えていきます。
[CSV取込]ボタン | CSVファイルを取り込みます。 CSVには、メールごとに変化させたい部分をそれぞれ設定しておきます。Excelなどでつくり、csv形式として保存しておくのがよいでしょう。文字コードは、現在、シフトJIS(cp932)のみに対応しています。 CSVの最初の値を{%0}、次の値を{%1}、以下同様に{%2}、{%3}...として表します。電子メールの文面にこの記号を書き入れておくと、CSVの中の該当する値を使って置き換えられます。この置き換えルールは電子メールやタイトル、添付ファイルの欄でも使えます。典型的には、CSVの最初のデータはそれぞれ送信したい電子メールアドレスになり、従って、「宛先email」の欄は{%0}とだけ書くことになるでしょう。 |
[編集モード]ボタン | メール本文の編集ができるモードになります。起動時は編集モードです。 |
[確認モード]ボタン | メールの内容を確認するモードになります。本文編集欄が黄色くなります。 |
[ヘルプ]ボタン | 簡単なヘルプメッセージが見られます。 |
[終了]ボタン | プログラムを終了します。 |
[送信者email]欄 | 送信者のメールアドレスをここに書きます。 |
[送信者名]欄 | 送信者の名前を書きます。ここは任意です。 |
[宛先email]欄 | 宛先のメールアドレスをここに書きます。通常 {%0} としておき、CSVの内容が使われるようにします。 |
[宛先名]欄 | 宛先の名前を書きます。{%...}などとして、CSVの内容を使うことになるでしょう。ここは任意です。 |
[タイトル]欄 | メールのタイトルを書きます。 |
[前] [次]ボタン | 確認モードで使います。複数のメールを出すことになるときは、このボタンでそれぞれのメールを確認します。 |
[送信開始]ボタン | メールの一括送信をはじめます。後述の安全装置がONになっているときには、実際のメール送信をしません。 |
メール本文入力欄 | メール本文を書きます。 |
[安全装置]チェック | ここのチェックをOFFにすると、はじめてメールの送信が実際に行われるようになります。むやみなネットワークアクセスを避けるため、起動時は必ずチェックが入っています。 |
添付ファイルをつけるときは、下のような行を本文中(ふつうは最後)に書きます。
@ c:\tenpuu\{%1}.pdf
アットマーク+スペースを書くと、ここは添付ファイルのフルパスを示すものとして扱われます。実際のメール本文からは省かれ、変わりに添付ファイルになります。添付ファイルは複数つけることが可能です。{%...}を使って、メールごとに違う添付ファイルをつけることもできます。
添付ファイルは、実際にお使いのコンピュータに存在するときのみ、メールに添付されます。そうでない場合はテキストのみのメールが送信され、添付ファイルの指定は無視されます。
CSVの中身がどのように反映されるか、というイメージは、下のような感じです。 -------- 宛先email: {%0} 宛先名: {%1}さま タイトル: {%1}さまへのメールです こんにちわ{%1}さん 添付ファイルを送ります @ d:\添付ファイル\{%2} -------- こんな感じのテンプレート↑が、下のようなCSVの行を適用されて… atesaki@dummy.mail,ダミー,data.xls ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ こんな風に仕上がる、という感じです。↓ -------- 宛先email: atesaki@dummy.mail 宛先名: ダミーさま タイトル: ダミーさまへのメールです こんにちわダミーさん 添付ファイルを送ります 添付ファイル: d:\添付ファイル\data.xls --------
メールの送信ログは、スクリプトと同じディレクトリに、log.txt という名前で追記されていきます。メール用にJISエンコードなどがされた後のデータですので、ちょっと読みづらいかもしれません。邪魔になったら時々消してもかまいません。
バグ等の報告は歓迎いたしますが、動作が完全であることを保証はしません。また、このプログラム利用したことによる損害などについて、作者は責任は負えません。