sendmailでの添付ファイルのメール送信

シェルスクリプトで記述した ここではfiledirのfilename.txtを添付し、メールを送信する

ヘッダー部分

#!/bin/sh

MAILTO="xxx.com"
MAILFROM="yyy.com"
FILEDIR=/filedir
MAILFILE=/var/tmp/mail.txt
MAILSUB="subject"
FILENAME=filename.txt

echo "To:"${MAILTO}     > $MAILFILE
echo "FROM:"${MAILFROM} >> $MAILFILE
echo "Subject:Test"     >> $MAILFILE
echo 'Content-Type: multipart/mixed; boundary="SECTION"' >> $MAILFILE
echo ""           >> $MAILFILE

ボディー部分

# 添付ファイルを圧縮する
cd /filedir
zip filename.zip filename.txt

CR=$(printf '\r')

#Base64エンコード
echo '--SECTION'                                 >> $MAILFILE
echo 'Content-Transfer-Encoding: base64'         >> $MAILFILE
echo 'Content-Type: text/plain; charset="UTF-8"' >> $MAILFILE
echo ''                                          >> $MAILFILE
cat ${MAILFILE} | \
    sed "/^\$/s/\$/$CR/" | \
    sed "/[^$CR]\$/s/\$/$CR/" | \
    base64                                       >> $MAILFILE

#Base64エンコード
#マルチパート内ヘッダーを付加
echo '--SECTION'                                 >> $MAILFILE
echo 'Content-Transfer-Encoding: base64'         >> $MAILFILE
echo "Content-Type: application/zip; name=filename.zip"       >> $MAILFILE
echo "Content-Disposition: attachment; filename=filename.zip" >> $MAILFILE
echo ''                                          >> $MAILFILE
cat $LOGFILENAME | base64                        >> $MAILFILE

echo '--SECTION--' >> ${MAILFILE}

メールを送信 圧縮したファイルを削除

cat $MAILFILE | sendmail -i -t

rm -v $FILENAME

参考URL:https://qiita.com/richmikan@github/items/a3a6d1a29982ae5868f1