2012-06-21 14 views
10

Ziel: Senden von E-Mails (mit sendmail) mit HTML-Body und binäre Anlage.Verwenden von sendmail für HTML Body und binäre Anlage

Gefolgt die Richtlinien in den folgenden Links angegeben

http://www.unix.com/shell-programming-scripting/159522-sendmail-html-body-attachment-2.html

http://www.unix.com/shell-programming-scripting/58448-sendmail-attachment.html

Es wird in dem Maße arbeiten, dass entweder HTML Körper oder die binäre Anlage mit uuencode, aber nicht beides.

Gegeben unten ist ein Ausschnitt des Shell-Skripts zu sendmail. Damit kommt der HTML-Text in Ordnung, aber der Anhang wird falsch codiert und kann nicht angezeigt werden.

Bitte beraten.

#!/usr/bin/ksh 

export MAILFROM="[email protected]" 
export MAILTO="[email protected]" 
export SUBJECT="Test PDF for Email" 
export BODY="email_body.htm" 
export ATTACH="file.pdf" 
export MAILPART=`uuidgen` ## Generates Unique ID 
(
echo "From: $MAILFROM" 
echo "To: $MAILTO" 
echo "Subject: $SUBJECT" 
echo "MIME-Version: 1.0" 
echo "Content-Type: multipart/mixed; boundary=\"-$MAILPART\"" 
echo "---$MAILPART" 
echo "Content-Type: text/html" 
echo "Content-Disposition: inline" 
cat $BODY 
echo "---$MAILPART" 
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"' 
echo "Content-Transfer-Encoding: base64" 
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"' 
uuencode -m $ATTACH $(basename $ATTACH) 
echo "---$MAILPART--" 
) | /usr/sbin/sendmail $MAILTO 

Ich verwende HP-UX ia64. Wird durch das Forum und Web und fanden Referenzen meist auf PHP, Python gesucht usw.

+0

Mit 'mutt -a' viel einfacher ist. Http://www.mutt.org/doc/man_page.html – ceving

+0

Danke, aber der aktuelle Server-Setup beschränkt mich nur :-(zu sendmail auch, mutt ist nicht installiert/setup auf dem Server – compuneo

+0

Senden Sie HTML body email mit einem einfachen Textanhang mit sendmail: http://stackoverflow.com/questions/17359/how-doi-isend-a-file-asan- email-attachment-using-linux-kommandozeile/14213935 # 14213935 –

Antwort

11

den Content Transfer-Codierung Typen ändern innerhalb Die E-Mail von base64 zu uuencode hat das Problem behoben. Danke für die Eingaben so weit.

Nachstehend ist das überarbeitete Skript, das funktioniert.

#!/usr/bin/ksh 

export MAILFROM="[email protected]" 
export MAILTO="[email protected]" 
export SUBJECT="Test PDF for Email" 
export BODY="email_body.htm" 
export ATTACH="file.pdf" 
export MAILPART=`uuidgen` ## Generates Unique ID 
export MAILPART_BODY=`uuidgen` ## Generates Unique ID 

(
echo "From: $MAILFROM" 
echo "To: $MAILTO" 
echo "Subject: $SUBJECT" 
echo "MIME-Version: 1.0" 
echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\"" 
echo "" 
echo "--$MAILPART" 
echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\"" 
echo "" 
echo "--$MAILPART_BODY" 
echo "Content-Type: text/plain; charset=ISO-8859-1" 
echo "You need to enable HTML option for email" 
echo "--$MAILPART_BODY" 
echo "Content-Type: text/html; charset=ISO-8859-1" 
echo "Content-Disposition: inline" 
cat $BODY 
echo "--$MAILPART_BODY--" 

echo "--$MAILPART" 
echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"' 
echo "Content-Transfer-Encoding: uuencode" 
echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"' 
echo "" 
#uuencode -m $ATTACH $(basename $ATTACH) 
uuencode $ATTACH $(basename $ATTACH) 
echo "--$MAILPART--" 
) > email_`date '+%Y%m%d_%H%M%S'`.out 
| /usr/sbin/sendmail $MAILTO 
+1

Wie machen wir es für mehrere Anhänge? – divinedragon

+0

@divinedragon, wiederholen Sie die Code von 'echo" - $ MAILPART "' bis vor 'echo "- $ MAILPART -" '. Das fügt einen Anhang hinzu. –

0

versuchen, eine neue Zeile hinzufügen, nachdem uuencode

und versuchen, auch ohne -m

+0

Uuencode -m fügt am Ende automatisch eine neue Zeile hinzu Ich hatte es bereits mit -m versucht und es hat auch nicht funktioniert .. Ich habe beide Vorschläge nochmal ausprobiert Sie und das gleiche Problem (Anhang kommt, aber ungültig) – compuneo