いわマン備忘録

備忘録とちょっとした設定メモや小ネタをUPしたいと思っております。

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}

※変数は省略してます。