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 "$report1" >> $tempfile
echo "$report2" >> $tempfile
echo "$report3" >> $tempfile
echo "" >> $tempfile
done
echo "" >> $tempfile
echo "" >> $tempfile
echo "Regards "$sendername" ("$senderaddress")" >> $tempfile
echo "" >> $tempfile
#
# For each file, create enclosure for the file.
#
messno=0
while [ $attno -gt $messno ]
do
messno=`expr $messno + 1`
#
# Check from command line if files are ascii or binary
#
if [ $bflag = 0 ]; then
#
# Add extra chr$ to ascii files for unix to dos conversion. This
# means reading in each line of the text file and writing it out to
# the temp file with a charage return character added to the end of
# each line.
# Unforntunately ksh read will ignore leading spaces at the beginning
# of each line.
#
echo "--Message-Boundary-"$boundary >> $tempfile
echo "Content-type: Application/Octet-Stream;
name=${filename[$messno]}; type=Text" >> $tempfile
echo "Content-description: attachment; filename=${filename[$messno]}"
echo "" >> $tempfile
{
while read line_data
do
echo "$line_data""
" >> $tempfile
done } < ${filename[$messno]}
else
#
# uuencode binary mail
#
echo "--Message-Boundary-"$boundary >> $tempfile
echo "Content-type: Application/Octet-stream;
name=${filename[$messno]}; type=Binary" >> $tempfile
echo "Content-disposition: attachment; filename=${filename[$messno]}"
echo "Content-transfer-encoding: X-UUencode" >> $tempfile
echo "" >> $tempfile
uuencode ${filename[$messno]} ${filename[$messno]} >> $tempfile
fi
done
#
# Send email message straight to sendmail. Use -v option if debug
# option has been set at the command line.
#
if [ $vflag = 1 ]; then /usr/lib/sendmail -v $sendto < $tempfile
else /usr/lib/sendmail $sendto < $tempfile
fi
#
# Remove temp file
#
rm $tempfile
Post by yy4 via DBMonster.comCan anyone provide the command how to send a text file as a attachment with a
proper subject using mailx or sendmail command in UNIX.
Note: I am using HP-UX OS. The file send should be the attachment, not in the
message body. In addition, I need to put in the mail subject as well.
--
Message posted via DBMonster.com
http://www.dbmonster.com/Uwe/Forums.aspx/informix/200607/1