2012-06-21 169 views
10

Objetivo: Enviar correo (utilizando sendmail) con cuerpo HTML y datos binarios.Uso de sendmail para cuerpo HTML y archivo adjunto binario

seguido las directrices especificadas en los siguientes enlaces

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

Se está trabajando en la medida en que, ya sea cuerpo HTML o el archivo adjunto binario con uuencode, pero no ambos.

A continuación se incluye un fragmento del script de shell para sendmail. Con esto, el cuerpo de HTML viene bien, pero el archivo adjunto se codifica/decodifica incorrectamente y no puede ver el mismo.

Por favor, asesorar.

#!/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 

Estoy usando HP-UX ia64. han buscado a través del foro y web y encontrado referencias sobre todo a PHP, Python, etc.

+0

usando 'mutt -a' es mucho más fácil:. Http://www.mutt.org/doc/man_page.html – ceving

+0

Gracias, pero la configuración actual del servidor restringe a mí Sendmail única :-(También, mutt no está instalado/configurado en el servidor – compuneo

+0

Enviar correo electrónico cuerpo HTML con un archivo adjunto de texto sin formato con sendmail: http://stackoverflow.com/questions/17359/how-do-i-send-a-file-as-an- email-attachment-using-linux-command-line/14213935 # 14213935 –

Respuesta

11

Cambiar el tipo de contenido dentro de la codificación de transferencia el correo electrónico de base64 a uuencode resolvió el problema. Gracias por las entradas hasta ahora.

A continuación se muestra la secuencia de comandos revisada que funciona.

#!/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

¿Cómo lo hacemos para varios archivos adjuntos? – divinedragon

+0

@divinedragon, repite el código de 'echo" - $ MAILPART "' antes de 'echo '- $ MAILPART -" '. Eso es lo que agrega un archivo adjunto. –

0

intento de añadir una nueva línea después uuencode

y tratar también sin -m

+0

uuencode -m agrega una nueva línea al final automáticamente. Ya había intentado con -m y tampoco funcionaba. He intentado de nuevo ambas sugerencias de usted y el mismo problema (archivo adjunto viene, pero no es válido). – compuneo

Cuestiones relacionadas