スクリプトのエラー判定後や処理結果を通知するために、mailコマンドでメールを送信したいことがあります。
スクリプトを実行するサーバでメールサーバを動かしていればよいですが、そうでないときは、SMTPサーバを指定すればメール送信することができます。
Windows(PowerShell)でメールを送信する場合は以下の記事をどうぞ。
-
Windows(PowerShell)でコマンドを使ってメールを送信する方法
スクリプト処理でエラーが発生した場合や処理結果を通知するためにコマンドでもメールを送信したいことがあります。一番シンプルにPowerShellでメールを送信する方法を紹介します。宛先を複数指定すること ...
PowerShell でGmailを送信する場合は以下の記事をどうぞ。
-
【PowerShell】Gmailを送信するスクリプト
タイトルの通りですが、PowerShellを使ってGmail送信するスクリプトを作ったのでメモします。 バックアップなどの処理結果を、Gmailで通知できたらよいなぁと思って用意したもの。宛先を引数に ...
mailコマンドでSMTPサーバを指定してメール送信する方法
ツールのインストール
まずは、mail コマンドがインストールされていなければインストールします。
1 |
# yum -y install mailx |
ちなみに、mailコマンドはmailxコマンドへのシンボリックリンクなので、どちらのコマンドでも同じように実行可能です。
メール送信コマンド
以下のコマンドでSMTPサーバを指定してメール送信できます。
1 |
# echo "テストメール" | mail -s $Subject -S $SMTP_Server -r $From_Address $To_Address |
オプション・引数の意味は以下の通りです。
-s | メール件名を指定 |
-S | SMTPを指定(※) |
-r | 送信元メールアドレスを指定 |
$To_Address | 宛先アドレスをコマンドの最後に指定 |
※SMTP情報は以下のように指定します。
smtp=smtp://192.168.1.10:587
これらを踏まえて以下のように実行します。
1 |
echo "テストメール(本文)" | mail -s "テスト(件名)" -S smtp=smtp://192.168.1.10:587 -r from@example.com to@example.com |
メール送信コマンド(応用)
バッチ処理などで、1回の処理の中で何度もメール通知をしたい場合があります。
そんなときは関数を作成しておくときれいに記述できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# メール本文のテキストを指定する(スクリプトファイルと同じPATHに作成) MailBody=$(cd $(dirname $0) ; pwd)/Mailbody.txt # 前回のメール本文のデータが残っている場合は削除する [ -e $MailBody ] && rm -f $MailBody # メール送信関数 function Send_mail () { # Mail header Subject=$(echo "テスト(件名)") SMTP_Server="smtp=smtp://192.168.1.10:587" From_Address=from@example.com To_Address=to@example.com # Send mail cat $MailBody | mail -s "$Subject" -S $SMTP_Server -r $From_Address $To_Address } # 本文を出力 echo "テスト" > $MailBody # メール送信 Send_mail |
まとめ
一度作成しておくと、メール送信の部分だけ使い回しできるので便利です。
↓↓↓ 持っていると便利な一冊。