It works perfectly and means you don't need to use MIME to format the body of the email message you just use the HTML file defined in the CONTENT section above (its brilliant).
HOWEVER
I need to send the email with an attachment, now this is not the same file used for the body of the email rather a completely different file e.g. a txt file say. The following doesn't work:
Take care - the script as posted would overwrite /file_location/filename.txt .
On my system the various Mime lines are surplus so I have removed them.
The construct below should cause the text file to be a proper attachment.
The full stop at the end of the message is assumed in some version of sendmail but there is no harm in including it.
On some unixes the text file conversion program is called unix2dos rather than ux2dos .
#!/usr/bin/ksh
export MAILTO="email_address"
export CONTENT="/export/home/aisdba/email_body.html"
export SUBJECT="subject of email"
(
echo "Subject: $SUBJECT"
# This appears in the mail body
cat $CONTENT
# The next line creates the attachment with a suitable extension to read
# with Windows notepad
ux2dos "/file_location/filename.txt" | uuencode myattach.txt
echo "."
) | /usr/sbin/sendmail $MAILTO
Thanks for both your replies. Ygor's reply is the one that seems to be working better for me, but the systems I use are very clunky so don't discount methyl's answer.
With Ygor's code I am now receiving an attachment, with the correct file name, however the file is empty, however I can see that the correct is on box, populated and ready to be attached.
I receive the following error at the end of my script run:
uuencode: illegal option -- base64
So I gather its the way I am encoding this attachment that is the problem. I don't know what exact uuencode I am using or the encoding options open to me, the actual uuencode file date is 2005. What other encoding options are there? My system is likely to use the most awkward one so lots of suggestions are welcome! Thanks
Thanks Ygor, nothing brought up in the search apart from uuencode sadly. My usual command to attach files to an email is:
uuencode $CSV_FILE $(basename $CSV_FILE)
) | if [ $DATABASE_LIVE = 1 ]
then mailx -b "$COPY_TO" -s "$SUBJECT" -r "$MAIL_FROM" "$MAIL_TO_LIVE"
else mailx -s "$SUBJECT" -r "$MAIL_FROM" "$MAIL_TO_TEST"
fi
However I wanted have the body of the email in MIME or even better (as per your coding) a HTML file that I can construct within my shell script. This makes the body of the email look good (HTML formatting) but also relevant to UNIX Box and Database(s) (with Shell Script variables).
Is there a way to combine the script? Many thanks.
I don't think so. Either create a plain text message with uuencoded attachments (via mailx) or a MIME multi-part message with mimencoded attachments (via sendmail).
I do receive an email with attached PDF but the image does not show in HTML body, the following shows up between the HTML body and the attached PDF file:
Content-Type: image/jpeg; filename="WirelessEmail1.jpg" Content-Disposition: inline Content-Transfer-Encoding: base64
I tried Google and other posts on this site but couldn't figure out how to embed this image, any help would be appreciated, thank you