○時になったら自動でメール送信したい。
今回はそんな仕組みをバッチファイルで記述しましたのでご紹介です。
概要
メールには「SMAIL」というツールを使っています。
バッチファイルだけではメール送信することはできませんが、SMAILを起動してあげることでバッチファイルからメール送信の仕組みを実現することができます。
一度作ってしまえば、いろいろな場面で流用できるため、かなり重宝しています。
SMAILを使う準備
SMAILを使うためには SMAIL.ini(メール送信のための情報が記録されている)の作成が必要です。
SMAIL.ini は以下の手順で作成します。
- SMAIL.exe を起動
- SMIAL初期設定 で SMTPサーバ の欄を入力
- 保存
順を追って簡単にご紹介します。
SMAIL.exe を起動
ダウンロードした SMAIL.exe をダブルクリックします。
SMAIL初期設定 で SMTPサーバ の欄を入力
以下は、Yahooメールの場合の設定の例です。
とりあえず試してみたい方は無料ですのでYahooでメールアカウントを取得してみてください。
自分のアカウントのユーザーIDとパスワードを設定すればメール送信できるはずです。
SMTPサーバの値はメールのサービスによって違うので注意
保存
保存ボタンをクリックすると、保存先に SMAIL.ini ができているはずです。
バッチファイルの内容
それではバッチファイルの内容について、備忘録を以下に記載しておきたいと思います。
下準備
まずは下準備をします。
echo off でコマンドを復唱させないようにし、clsで画面の表示をきれいにしておきます。
- echo off
- cls
- CD C:\WORK
C:\WORKはバッチファイルやSMAIL.exeが置いてあるフォルダです。
メールを送信
メールを送信する命令が以下の「SMAIL」で始まる1文です。
- smail -hsmtp.mail.yahoo.co.jp -f"send-address@yahoo.co.jp" -i -s"メールタイトル" -F"メール本文.txt" -a"添付ファイル.log" receive-address@yahoo.co.jp -t
- IF NOT %ERRORLEVEL% == 0 goto ERR
- goto OK
[ SMAIL ]
SMAIL.exeを起動するという意味です。
直前にCD C:\WORKとディレクトリを移動していますので、「smail」と記述すると「C:\WORK\smail.exe」が実行されることなります。
[ -hsmtp.mail.yahoo.co.jp ]
-h はホスト名(メールを送信するメールサーバ名又はIPアドレス)を指定します。
今回の例ではYahooが公開している送信メール(SMTP)サーバーを指定しています。
[ -f”send-address@yahoo.co.jp” ]
送信元となるメールアドレス(アカウント)をダブルクォーテーション内に記述します。
[ -i ]
インフォメーション表示モードです。
メール送信時の情報がコマンド上に表示されますので、特に不要な理由がなければ指定しましょう。
[ -s”メールタイトル” ]
メールタイトルです。
[ -F”メール本文.txt” ]
メール本文です。
コマンドに長々と本文を書かずに済むよう、C:\WORK にテキストファイルの本文を配置します
[ -a”添付ファイル.log” ]
添付ファイルがある場合、指定することができます。
[ receive-address@yahoo.co.jp ]
宛先のメールアドレスです。
[ -t ]
NTタイムゾーン調整オプションです。
国内なら不要な気もしますが、あっても問題ないため、いつも指定していました。
SMAILコマンド後にERRORLEVELを判定して、メール送信エラーに備えています。
日々、運用していくとメール送信が失敗するケースも発生します。
そんな事態にも対処できるような工夫もあると安心できます。
後処理
もし、SMAILでなんらかのエラーがあった場合、気づけるようにしておきます
- :ERR
- echo ■■エラーが発生したため送信できませんでした■■
- goto END
メッセージ表示だけでなく、エラーログを保存しておくのもいいね
- :OK
- echo 正常に送信されました
- goto END
-
- :END
- Timeout 20
- exit
まとめ
今回は単純にメールを送信するバッチファイルを記述しました。
基本の仕組みはそのままに、いろいろな場面に応じて少し記述を変更すれことで、対応にも幅がでてきそうですね。
ぜひ一度お試しあれ。
コメント