Linuxのコマンドから、添付ファイルを送信したい時があると思います。
sendmailコマンドだけでは、添付ファイルを送ることはできません。
そのため、添付ファイルを送信できるコマンドに、ラップする必要があります。
本記事では、sendmailを使った添付ファイルを送信するサンプルを解説しています。
サンプルプログラム
sendm.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#!/bin/sh TO=$1 ATTACH_PATH=$2 ATTACH_NAME=$3 if [ "$TO" = "" ]; then echo "usage: $0 mailaddress attach_file_name" exit 1 fi SUBJECT="サンプル件名" MAIL_BOUNDARY=`date +%Y%m%d%H%M%N` ATTACH_FILE_PATH=${ATTACH_PATH}/archive/${ATTACH_NAME} ATTACH_FILE_NAME=${ATTACH_NAME} FROM="from@hoge.com" CC="cc@hoge.com" /usr/sbin/sendmail -t << EOF From: ${FROM} To: ${TO} Cc: ${CC} Subject: ${SUBJECT} MIME-Version: 1.0 Content-type: multipart/mixed; boundary=${MAIL_BOUNDARY} Content-Transfer-Encoding: 7bit --${MAIL_BOUNDARY} Content-type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit `cat ${ATTACH_PATH}/message/body.txt` --${MAIL_BOUNDARY} Content-type: application/zip; name=${ATTACH_FILE_NAME} Content-Transfer-Encoding: base64 Content-Disposition : attachment; filename=${ATTACH_FILE_NAME} `cat ${ATTACH_FILE_PATH} | base64` --${MAIL_BOUNDARY}-- EOF |
./message/body.txt
ここに記載した内容が、メール本文として送信されます。
コマンドの呼び出し方
下記のようにラップしたコマンドを利用します。
1 |
./sendm.sh to@hoge.com ./ ./sample_list.zip |