muttコマンドで件名、本文、添付ファイルありでメールを送信する方法
メールログの集計内容をファイル添付して1日1回送信したいと思ったので調べてみた。uuencodeコマンドとmailコマンドを使うネタが大半でしたが、色々試してみた結果、muttコマンドに行き着いた。
uuencodeコマンドとmailコマンドでも送信できるが、文字化け防止にnkfコマンドを使ったりもしたが、結局改善できない所もあり少し悩んだ…orz
# muttコマンドのインストール
yum -y install mutt
# 添付ファイル付きでメール送信
mutt -s "Subject" ugauga@monmon.jp -a "/home/hogeman/20141016.log" < /home/hogeman/hogehoge.txt
ポイントはオプション指定する順番だった。
アドレスより前に添付ファイルのパスを記載するとNGだったりもする。
「< /home/hogeman/hogehoge.txt」の内容を本文として流し込む感じ。
なので、対象ファイルに文章を記載すれば、それがそのまま送信された。
下記、ちょー簡単なシェル。
#!/bin/sh -
### ------------------------------------------------------------------------------------
###
### muttコマンドを利用した添付ファイル付きメールの送信
###
### ------------------------------------------------------------------------------------
# 添付ファイル
tmpfile="/home/hogeman/20141016.log"
# 件名
subject="もんげーもんげ"
# 本文内容
mailbody="/home/hogeman/hogehoge.txt"
# メールアドレス
mailaddr="ugauga@monmon.jp"
# コマンド実行
mutt -s ${subject} ${mailaddr} -a ${tmpfile} < ${mailbody}
まぁ、これをベースにログ集計から添付ファイルありメールの送信までをやれるようにしますか。
# おまけメモ
yum -y install sharutils
yum -y install nkf
「uuencode」「nkf」コマンドはCentOS、SLではインストールが必要なので、
上記のようにyumを使ってインストールが可能。
今回は使わないが、一応メモっておく。
# 追記
ファイルを複数添付したい場合は、下記のようにする。
mutt -s ${subject} ${mailaddr} -a ${tmpfile1} -a ${tmpfile2} < ${mailbody}
※変数は省略してます。