気ままに

プログラム関連で困ったことを調べて気ままに投稿

【AWS】EC2インスタンスから添付ファイル有りのメールを送信する

EC2の「Amazon Linux AMI」からメールを送る時に、本文にそのまま表示するのではなく、ログなどを添付で送りたい場合(長い文面だと、Gmailとかだと見づらい)、 バッチの実行結果を添付ファイルとして送信した場合があったのでその時のメモ

必要なpackageをインストール

$ sudo yum install -y mailx
$ sudo yum -y install sharutils

以下のコマンドを実行すると、lsコマンドで表示したファイルの一覧をtest.txtに書き出して test.txtという添付ファイルでメールが送られる。メールのタイトルは、-sオプションで指定した「バッチ実行結果」になります。

$ ls -la >> test.txt
$ uuencode ./test.txt test.txt | mail -s "バッチ実行結果" "xxx@test.com"
$ rm test.xt

バッチの実行結果をファイルに保存して、メールを送信するシェルを書くとこんな感じで、 CMDとFILE,TOを自分の環境に合わせて書き換えてcrontabに設定すると、バッチの実行結果がメールに添付されて送られくるようになります。

#!/bin/sh
TODAY=$(date "+%Y_%m_%d")
# 実行コマンド
CMD="php -f /var/www/test/phpinfo.php"

# 添付FILE名
FILE="./batch_${TODAY}.txt"

# 送信先
TO="xxx@test.com"


# 添付ファイル作成
$CMD >> $FILE


# メール送信
uuencode $FILE $FILE | mail -s "バッチ実行結果_${TODAY}" "${TO}"

# 添付ファイルを削除
rm $FILE

google先生に聞いたサイトでは、uuencodeの後の指定がファイル名だけだったので、送信できないというのでハマってしまったので、メモ。

uuencode 変換するファイル名 変換したファイル名

となるので、変換するファイル名だけだと、メールが送信できずハマるのでご注意を

詳解 シェルスクリプト

詳解 シェルスクリプト