Re: mailx / sendmail command
Posted in 2006
Searching on google groups (using: mailx sending attachments ) Choosing: http://groups.google.com/group/comp.unix.aix/browse_frm/thread/e37e3e2937bd9da2/83e9c039d82df66e?lnk=st&q=mailx+sending+attachments&rnum=4&hl=en#83e9c039d82df66e I get a reference to the following shell script which looks worked out well and which only uuencodes if it has to (because you are sending binary files, specified with the -b option) #set +x # # jail -> shell script for sending mime email enclosures from command line # # Usage : jail [options] email-address file-to-be-sent # $1 $2 # # John Roebuck - 11/08/97 # # John Roebuck - 29/01/98 - Add options to allow optional subject and urgent. # John Roebuck - 18/03/98 - Get Hostname of machine and user. # John Roebuck - 26/05/98 - Allow multiple files to be sent. # John Roebuck - 11/12/98 - Remove all MTMS options and requirements, # also added -v for verbose (debug) sendmail option. # John Roebuck - 17/12/98 - Added -b option of uuencoding binary files. # John Roebuck - 22/12/98 - Added -r option of delivery receipt required. version="jail 1.4 by John Roebuck 17/12/98" # # Get command line options # bflag=0 rflag=0 sflag=0 uflag=0 vflag=0 while getopts brs:uv name do case $name in b) bflag=1;; r) rflag=1;; s) sflag=1 sval="$OPTARG";; u) uflag=1;; v) vflag=1;; # # Display syntax if ? passed as an option in the command line # ?) echo " " echo "Usage : jail [options] email-address files-to-be-set" echo " " echo " options are -b for binary files" echo " -r delivery receipt required" echo " -s (subject of mail message)" echo " -u Urgent" echo " -v Verbose sendmail (debug)" echo " ("$version")" echo " " exit 2;; esac done # # Set urgent flag to 1 if urgent option is found # if [ $uflag = 1 ]; then urgent="urgent" else urgent="normal" fi # # Include subject from command line if subject option is found # if [ $sflag = 1 ]; then subject=$sval else subject=" " fi shift $(($OPTIND -1)) # # Display syntax if less than 2 command line parameters are found # after the command line options. Require email address and 1 file # as a minimum. # if [ $# -lt 2 ] then echo " " echo "Usage : jail [options] email-address files-to-be-sent" echo " " echo " options are -b for binary files" echo " -r delivery receipt required" echo " -s (subject of mail message)" echo " -u Urgent" echo " -v Verbose sendmail (debug)" echo " ("$version")" echo " " exit fi # # set -f stops * being expanded within the shell script. (ksh option) # set -f # # Now get the send to email address # sendto=$1 shift # # Find out how many files to send as enclosures in this email message # attno=$# if [ $attno = 1 ]; then attmess="enclosure" else attmess="enclosures" fi # # Format the variable $now as "Friday 18 December 1998 16:22" # xday=`date +%a` xdayno=`date +%d` xmonth=`date +%b` xyear=`date +%Y` xtime=`date +%H:%M:%S` now=$xday", "$xdayno" "$xmonth" "$xyear" "$xtime # # Create message boundary number based on process id # boundary=JPR$$ # # Create message id number based on date and process id # messid=`date +%d%m%y`$$ # # Create temporary file based on date time and process id # tempfile=/tmp/jail-`date +%d%m%y%H%M%S`$$ touch $tempfile # # Get sender details eg user name and description, machine hostname # # sender login is the login name of the current user account # senderlogin=`whoami` # # Domain is taken from the domain field in /etc/resolv.conf file # senderdomain=`grep domain /etc/resolv.conf | cut -f2` # # Sender address is login name @ machine hostname . domain # senderaddress=$senderlogin"@"`hostname`"."$senderdomain # # Sender name is taken from the login name description field in /etc/passwd # sendername=`grep $senderlogin /etc/passwd |cut -d: -f5` # # Create header part of email file # echo "From: \\""$sendername"\\" <"$senderaddress">" >> $tempfile echo "To: "$sendto >> $tempfile echo "Date: "$now >> $tempfile echo "Mime-Version: 1.0 "$version >> $tempfile echo "Content-Type: Multipart/Mixed; boundary=Message-Boundary-"$boundary >> $tempfile echo "Subject: "$subject>> $tempfile # # Is a delivery receipt required ? # if [ $rflag = 1 ]; then echo "Return-Receipt-To: \\""$sendername"\\" <"$senderaddress">" >> $tempfile fi echo "Priority: "$urgent >> $tempfile echo "Message-Id: <"$messid"."$senderdomain >> $tempfile echo "Status: RO" >> $tempfile echo "" >> $tempfile echo "" >> $tempfile echo "--Message-Boundary-"$boundary >> $tempfile echo "Content-type: text/plain; charset=US-ASCII" >> $tempfile echo "Content-transfer-encoding: 7BIT" >> $tempfile echo "Content-description: Read Me First" >> $tempfile echo "" >> $tempfile echo "" >> $tempfile # # Create mail message body part of email file # echo "Hello" >> $tempfile echo "" >> $tempfile echo "Please find "$attno" '"$attmess"' to this email message :- " >> $tempfile echo "" >> $tempfile # # Generate file information for each enclosure. The information is in the # format : File name 1 aix.doc # Produced on 16 Dec at 18:59 # File size 33469 bytes. # messno=0 while [ $attno -gt $messno ] do messno=`expr $messno + 1` filename[$messno]=$1 shift report1="File name "$messno" "${filename[$messno]} report2=`ls -l "${filename[$messno]}" |awk '{print "" "Produced on "$6 " " $7 " at " $8 "" }'` report3=`ls -l "${filename[$messno]}" |awk '{print "" "File size "$5" bytes." "" }'` echo "$repo