01-25-2006
Sending attachments using email through shell script
Hi all,
I have written a shell script which sends emails with attachments to our clients. All our attachments are simple flat files (.txt format).
The script is working fine and sending the attachments to the mail-ids except that, when i am sending the attachments to non-outlook users (Like yahoo, gmail etc), i am seeing a junk character at the end of each line and the next line of file is appended to the previous line. In short all the data in the file is coming in one long line.
Here also there is a small twist. In gmail, there will be 2 options 2 download the file, View and Download. I am getting this problem only when i am downloading to the file to my local folder and viewing it.
Also when i am opening the same attachments in outlook, i can see that the data is appearing line by line as we entered it.
Kindly advise me, why this problem is occuring only when i am sending the mail to yahoo and gmail accounts. I am pasting the relavent code from my script.
*********************************************************
(
cat <<!
From: $FROM
Subject: $SUBJ
To: $TO
!
[ "$CC" ] && echo "Cc: $CC"
## Generate the MIME header #####
cat <<!
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="DMW.Boundary.605592468"
This is a Mime message, which your mail reader may not understand. Parts
of the message will appear as text. If the remainder appears as random
characters in the message body, instead of as attachments, then you'll
have to extract these parts and decode them manually.
--DMW.Boundary.605592468
Content-Type: text/plain; name="message.txt"; charset=US-ASCII
Content-Disposition: inline; filename="message.txt"
Content-Transfer-Encoding: 7bit
!
# Read the standard input as the main text of the message ...
# -------------------------------------------------------
cat -
# Now process the File attachments ...
# -----------------------------------------
if [ "$FILES" ]
then
for fl in $FILES
do
BASE=`basename $fl`
echo --DMW.Boundary.605592468
echo Content-Type: application/octet-stream\; name=\"$BASE\"
echo Content-Disposition: attachment\; filename=\"$BASE\"
echo Content-Transfer-Encoding: 7bit
echo
cat $fl
done
fi
# append the final boundary line ...
echo --DMW.Boundary.605592468--
) | /usr/lib/sendmail -t
*********************************************************
Thanks & Regards
Vamsi.
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
Hi everyone,
I have a shell script that I use to send some emails with attachments. Based on the attachment file that is being sent, I choose the recipient.
My file_list.txt looks like this
CAJ.txt;sm@email.com
KXLD.txt;jc@email.com
I do a grep on this file to look for the file name and... (3 Replies)
Discussion started by: memonks
3 Replies
2. UNIX for Dummies Questions & Answers
Hello,
I've search the forum, but I cannot find an answer to my specific question. I'm trying to send some files to my professor. Upon his request, I used the following:
tar -cvf vh.tar vh_part1.c vh_part2.c vh_part3.c vh_part4.c vh_sample_run15.txt uuencode vh.tar vh.tar > proj1 mail... (2 Replies)
Discussion started by: venush
2 Replies
3. Shell Programming and Scripting
I am pretty new to Unix shell scripting, but wondered if anyone could help (in layman's terms if possible!!) :)
I have a shell script which ultimately sends an alert to an email address if part of a batch of programs fails. Here's the script that sends the email:
Script: 6check.csh... (8 Replies)
Discussion started by: tjhorwood
8 Replies
4. Shell Programming and Scripting
hi guys,
I need a shell script to send mail automatically to my personal mail id like xxxx@hotmail.com but while experimenting with "mail" command I faced following problems.
cat text1.txt | mail -s 'test mail' xxxx@hotmail.com
command successfully executed
but while
checking for... (4 Replies)
Discussion started by: rrd1986
4 Replies
5. HP-UX
Hi,
I am executing the following command in order to send a file as an attachment:
mailx -s "Subject" emailID@xyz.com < Testfile.txt
Instead of attaching the file Testfile.txt, it is writing the contents of the file in the email message body. Please advise on how I can send the file as an... (7 Replies)
Discussion started by: sangharsh
7 Replies
6. Shell Programming and Scripting
Hi,
I need to send email from a shell script. i echoed some information to a file and i am doing cat command in the email syntax
thanks (2 Replies)
Discussion started by: rocky1954
2 Replies
7. Shell Programming and Scripting
Hi Fellas,
I have a script that queries a sybase DB through isql and appends to a file, say file.csv
I want to use the mail command in the shell script to email the file to me. i tried the following command but it doesn't work. can any one suggest whats wrong here. Note that i need the file... (2 Replies)
Discussion started by: Irishboy24
2 Replies
8. Shell Programming and Scripting
Hi,
Im having a bit of an issue with using the uuencode command and sending out an email.
My aim is to send an email out which has a body and also have attachments. Currently I can either get one or the other and not both on the same email.
uuencode... (4 Replies)
Discussion started by: 02JayJay02
4 Replies
9. Shell Programming and Scripting
Hello! I am writing a KornShell script that (in addition to other things) sends a file from a Unix directory to a SharePoint directory. However when executing the script there is no sign of the file on the SharePoint.
I have tested the script using my personal email as the destination and the... (3 Replies)
Discussion started by: mattkoz
3 Replies
10. Shell Programming and Scripting
Can anyone help me out how to send the email without the word success
while sending to the recipient.
echo "success" | mailx -s "webshell instance has been started noiw" implementation@tkcl.com (8 Replies)
Discussion started by: ramkumar15
8 Replies
TNEF(1) General Commands Manual TNEF(1)
NAME
tnef - decode Microsoft's Transport Neutral Encapsulation Format
SYNOPSIS
tnef [options] [FILE]
tnef {--help | --version}
DESCRIPTION
This manual page documents the tnef filter. tnef decodes e-mail attachments encoded in Microsoft's Transport Neutral Encapsulation Format
(hereafter, TNEF), which "wraps" Microsoft e-mail attachments.
Unfortunately, these "wrapped" attachments are inaccessible to any e-mail client that does not understand TNEF. Fortunately, the tnef fil-
ter can be used by any MIME-aware client to unpack these attachments.
OPTIONS
-f FILE, --file=FILE
use FILE as input ('-' denotes stdin). When this option is omitted, tnef reads data from stdin.
-C DIR, --directory=DIR
unpack file attachments into DIR.
-x SIZE, --maxsize=SIZE
limit maximum size of extracted archive (bytes)
-t, --list
list attached files, do not extract.
-w, --interactive, --confirmation
ask for confirmation for every action.
--overwrite
when extracting attachments, overwrite existing files.
--number-backups
when extracting attachments, if file FOO will be overwritten, create FOO.n instead.
--use-paths
honor file pathnames specified in the TNEF attachment. For security reasons, paths to attached files are ignored by default.
--save-body FILE
Save message body data found in the TNEF data. There can be up to three message bodies in the file, plain text, HTML encoded, and
RTF encoded. Which are saved is specified by the --body-pref option. By default the message bodies are written to a file named
message with an extension based upon the type (txt, html, rtf).
--body-pref PREF
Specifies which of the possibly three message body formats will be saved. PREF can be up to three characters long and each charac-
ter must be one of 'r', 'h', or 't' specifying RTF, HTML or text. The order is the order that the data will be checked, the first
type found will be saved. If PREF is the special value of 'all' then any and all message body data found will be saved. The
default is 'rht'.
--save-rtf FILE
DEPRECATED. Equivalent to --save-body=FILE --body-pref=r
-h, --help
show usage message.
-V, --version
display version and copyright.
-v, --verbose
produce verbose output.
--debug
enable debug output.
EXAMPLE
The following example demonstrates typical tnef usage with a popular Unix mail client called "mutt".
Step 1 -- Configure ~/.mailcap
Mutt can't use tnef for its intended purpose until an appropriate content type definition exists in ~/.mailcap . Here's a sample defini-
tion:
application/ms-tnef; tnef -w %s
This mailcap entry says that whenever the MIME content type:
application/ms-tnef
is encountered, use this command to decode it:
tnef -w %s
The latter command string invokes tnef, specifying both the -w option and the attachment (created as a temporary file) as command line
arguments.
Step 2 -- Add The Filter To $PATH
Mutt can't invoke tnef if the filter isn't accessible via $PATH.
Step 3 -- Test Mutt
Use mutt to read a message that includes a TNEF attachment. Mutt will note that an attachment of type "application/ms-tnef is unsup-
ported".
Press the "v" key to open mutt's "view attachment" menu.
Move the cursor over the TNEF attachment and press the enter key to "view" the attachment. Mutt will launch tnef and invoke it using the
command line syntax specified in ~/.mailcap (step 1). tnef then decodes all file(s) included in the TNEF attachment, prompting for confir-
mation prior to creating an individual file (refer to -w option above). -w is useful here because it gives the end user a chance to view
the filename(s) included in the mail message.
Note that Mutt's attachment menu also supports a pipe option, which permits the user to pipe attachments to an external filter (how conve-
nient). So, to list the contents of a TNEF attachment prior to decoding it, press the "|" key and enter this command:
tnef -t
SEE ALSO
metamail(1), mailcap(4), mutt(1), other email clients.
AUTHOR
Mark Simpson.
REPORTING BUGS
Report bugs to Mark Simpson <verdammelt@users.sourceforge.net>
OTHER REFERENCES
This web page:
http://support.microsoft.com/support/kb/articles/Q136/2/04.asp
describes how to configure Microsoft email clients so that the TNEF format is disabled when sending messages to non-TNEF-compatible
clients.
Filter TNEF MIME Decoder TNEF(1)