LoginSignup
16
17

More than 5 years have passed since last update.

[bash] CentOS添付ファイル付きメール送信(sendmail)の実装

Posted at

添付ファイル付きメールの実装

この実装が正解という訳ではありませんが、

uuencodeコマンドを使いたくなかった。
echo でメールヘッダを作りたくなかった。

というところだけは、守りましたw

環境

  • CentOS release 6.3
  • sendmail-8.14.4-8.el6.x86_64

実装

  • そんな難しいことはしてません。シンプルに。
#/bin/sh

# commands.
SENDMAIL=/usr/lib/sendmail
ECHO=/bin/echo
GZIP=/bin/gzip
CAT=/bin/cat
RM=/bin/rm

# attachment file info.
ATTACH_FILE=attachmail.txt
ATTACH_PATH=/tmp/$ATTACH_FILE

# mail head settings.
MAIL_BODY=/tmp/mail_body.txt
MAIL_FROM=xxx@abc.com
MAIL_TO=yyy@abc.com
MAIL_SUBJECT="TEST ATTACHMENT MAIL."
MAIL_BOUNDARY=`date +%Y%m%d%H%M%N`

# make attachment file (test data).
$ECHO "1,2,3,4,5" > $ATTACH_PATH
$ECHO "6,7,8,9,10" >> $ATTACH_PATH

# attachment compression.
cd /tmp
$GZIP $ATTACH_FILE

#make body.
$ECHO "this is Body." > $MAIL_BODY

# send mail.
$SENDMAIL -t << EOF
From: ${MAIL_FROM}
To: ${MAIL_TO}
Subject: ${MAIL_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} ${MAIL_BODY}`

--${MAIL_BOUNDARY}
Content-type: application/zip;
 name=${ATTACH_FILE}.gz
Content-Transfer-Encoding: base64
Content-Disposition : attachment;
 filename=${ATTACH_FILE}.gz

`${CAT} ${ATTACH_PATH}.gz | base64`

--${MAIL_BOUNDARY}--
EOF

$RM -fr ${ATTACH_PATH}.gz

以上です。

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17