User Tools

Site Tools


email.sh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
email.sh [2007/06/26 13:29] 131.211.45.44email.sh [2007/06/26 13:29] (current) 131.211.45.44
Line 1: Line 1:
 +====== email.sh ======
  
 +This little script sends an email with one or more attachments from the commandline. It uses either Perl's ''MIME:Base64'' or openssl to do the Base64 encoding.
 +
 +<code bash>
 +#!/bin/sh
 +
 +# Sends an email with attachements need perl with MIME::Base64
 +
 +#path to sendmail
 +SENDMAIL='/usr/sbin/sendmail'
 +
 +#Your base64 encoder - must accept STDIN and encode to STDOUT
 +#BASE64="eval openssl enc -base64"
 +BASE64="perl -e \"use MIME::Base64; print encode_base64(join('',<STDIN>));\""
 +
 +while getopts "s:t:f:m:" OPTION
 +do
 +  case $OPTION in
 +    s ) SUBJECT=$OPTARG;;
 +    t ) RECEIVER=$OPTARG;;
 +    m ) MESSAGE=$OPTARG;;
 +    f ) FROM=$OPTARG;;
 +  esac
 +done
 +
 +if [ -z "$SUBJECT" ] || [ -z "$RECEIVER" ]
 +then
 +  echo "Usage: `basename $0` -s <subject> -t <receiver> [-f <sender>] [-m <text>] <attachements>"
 +  exit
 +fi
 +
 +shift $(($OPTIND - 1))
 +
 +BOUNDARY='000XMAIL000'
 +DATE=`date -R`
 +
 +if [ ! -z "$FROM" ]
 +then
 +  SENDMAIL="$SENDMAIL -t -f $FROM"
 +else
 +  SENDMAIL="$SENDMAIL -t"
 +fi
 +
 +(
 +echo -en "MIME-Version: 1.0\n"
 +echo -en "To: <$RECEIVER>\n"
 +if [ ! -z "$FROM" ]
 +then
 +  echo -en "From: <$FROM>\n"
 +fi
 +echo -en "Subject: $SUBJECT\n"
 +echo -en "Date: $DATE\n"
 +echo -en "Content-Type: multipart/mixed; boundary=\"$BOUNDARY\"\n\n"
 +
 +echo -en "This is a multi-part message in MIME format.\n"
 +echo -en "--$BOUNDARY\n"
 +echo -en "Content-Type: text/plain; charset=iso-8859-1; format=flowed\n"
 +echo -en "Content-Transfer-Encoding: 8bit\n\n"
 +echo -en "$MESSAGE\n\n"
 +echo -en "See attached file(s)\n\n"
 +
 +for ATTACHMENT in $@
 +do
 +  FILENAME=`basename $ATTACHMENT`
 +  MIMETYPE=`(file -i $ATTACHMENT |awk '{print $2}') 2>/dev/null`
 +  echo -en "--$BOUNDARY\n"
 +  echo -en "Content-Type: $MIMETYPE; name=\"$FILENAME\"\n"
 +  echo -en "Content-Transfer-Encoding: base64\n"
 +  echo -en "Content-Disposition: inline; filename=\"$FILENAME\"\n\n" 
 +  cat $ATTACHMENT | (eval $BASE64)
 +done
 +
 +echo -en "--$BOUNDARY--\n"
 +) | (eval $SENDMAIL)
 +</code>
 +
 +
 +or just just mutt ((http://www.mutt.org))
 +<code>
 +$ mutt -s"Subject" -i /path/to/bodytext -a /path/to/attachment user@doma.in
 +</code>
email.sh.txt · Last modified: 2007/06/26 13:29 by 131.211.45.44