bash で、シェルスクリプトからメールを送る方法

bash では、様々なコマンドを`(バッククオーテーション)で囲むと、そのコマンドを変数に入れたりすることができる。つまり、何か処理を始めたり終わったことをメールで通知する場合は次のようにする。 #!/bin/bash echo 'Subject: Started: your_program' > temp.txt echo 'To: yourname@yourdomain.com' >> temp.txt echo 'Started.' >> temp.txt cat temp.txt | `sendmail -t -i` rm temp.txt your_program (←ここに処理したいプログラム名(時間がかかるもの)を書く) echo 'Subject: Completed: your_program' > temp.txt echo 'To: yourname@yourdomain.com' >> temp.txt echo 'Completed.' >> temp.txt cat temp.txt | `sendmail -t -i` rm temp.txt 大事なのは cat temp.txt | `sendmail -t -i` としている部分で、ここでは temp.txt という名前のファイルの内容を、sendmail にパイプ(|)で渡してメールしている。 sendmail のオプションは、
  • -t…To:、Cc:、Bcc: フィールドをメッセージ中に書くと、受信者のアドレスとして読み込まれる。Bcc: フィールドはメッセージの転送前に 削除される。
  • -i…入力されるメッセージ中の `.' だけを含む行を無視。 このフラグは、データをファイルから読み込むような場合に使用する必要がある。