シェルスクリプトタグ

メール送信スクリプト

Linuxのコマンドラインからメールを送信するスクリプトを作成(正しくはwebの内容を改変)した。

  • 添付ファイル可能(0でも複数でも)

使用する機会は今の所ほとんどないと思う……

詳しくはwikiで。

#!/bin/bash

############################
## メール添付ファイルスクリプト
## コマンドラインから添付付きメールを送信するスクリプトです.
##
## send_mail.sh {toアドレス} {タイトル} {本文ファイル} [{添付ファイル名}...]
##
############################

## Init section
from_addr='ara_t@po.mdu.ac.jp'
to_addr=$1
subject=`echo $2 | nkf -w -Lu`
mail=`cat $3 | nkf -w -Lu`
shift; shift; shift
boundary=`date +%Y%m%d%H%M%N`

## generate MIME encoded mail
echo "From: $from_addr" > .MIME_MAIL.tmp
echo "To: $to_addr" >> .MIME_MAIL.tmp
echo "Subject: $subject" >> .MIME_MAIL.tmp
echo "MIME-Version: 1.0" >> .MIME_MAIL.tmp
echo "Content-type: multipart/mixed; boundary=\"----$boundary\"" >> .MIME_MAIL.tmp
echo "Content-Transfer-Encoding: 7bit" >> .MIME_MAIL.tmp
echo "" >> .MIME_MAIL.tmp
echo "This is a multi-part message in MIME format." >> .MIME_MAIL.tmp
echo "" >> .MIME_MAIL.tmp

## Insert MAIL_BODY (if you need)
echo "------$boundary" >> .MIME_MAIL.tmp
echo "Content-type: text/plain; charset=utf-8" >> .MIME_MAIL.tmp
echo "Content-Transfer-Encoding: 7bit" >> .MIME_MAIL.tmp
echo "" >> .MIME_MAIL.tmp
echo "$mail" >> .MIME_MAIL.tmp
echo "" >> .MIME_MAIL.tmp

## Attach file to E-Mail
while [ $# -ge 1 ] ; do
  attach_file=$1
  filename=`echo $attach_file | sed -e "s/.*\/\(.*$\)/\1/"`
  content_type=`file --mime $attach_file | cut -d' ' -f2`
  echo "------$boundary" >> .MIME_MAIL.tmp
  echo "Content-type: $content_type" >> .MIME_MAIL.tmp
  echo " name=$filename" >> .MIME_MAIL.tmp
  echo "Content-Transfer-Encoding: base64" >> .MIME_MAIL.tmp
  echo "Content-Disposition : attachment;" >> .MIME_MAIL.tmp
  echo " filename=$filename" >> .MIME_MAIL.tmp
  echo "" >> .MIME_MAIL.tmp
  cat $filename | base64 >> .MIME_MAIL.tmp
  echo "" >> .MIME_MAIL.tmp
  shift
done
echo "------$boundary--" >> .MIME_MAIL.tmp

## Send E-Mail
/usr/sbin/sendmail -i $to_addr < .MIME_MAIL.tmp

## Delete TEMP file
rm -f .MIME_MAIL.tmp

exit 0