2009-08-26 24 views
18

¿Alguien tiene una demostración disponible?¿Cómo enviar un correo electrónico html con el comando bash "sendmail"?

Sendmail se dice que no escalable, pero es gratis, así que decidió utilizarlo primero por ahora :)

+0

¿Qué entiende usted por correo electrónico HTML. ¿Las páginas HTML en el archivo adjunto o el correo electrónico deben estar en formato HTLM? – Space

+0

el correo electrónico debe estar en formato HTLM – omg

+1

¿Se requiere sendmail? Puedo hacer lo mismo usando el correo POSIX básico pero no tengo acceso a sendmail. –

Respuesta

17

Si le entiendo correctamente, quiere enviar el correo en formato HTML utilizando el comando linux sendmail. Este código está trabajando en Unix. Por favor inténtalo.

echo "From: [email protected] 
To: [email protected] 
MIME-Version: 1.0 
Content-Type: multipart/alternative; 
boundary='PAA08673.1018277622/server.xyz.com' 
Subject: Test HTML e-mail. 

This is a MIME-encapsulated message 

--PAA08673.1018277622/server.xyz.com 
Content-Type: text/html 

<html> 
<head> 
<title>HTML E-mail</title> 
</head> 
<body> 
<a href='http://www.google.com'>Click Here</a> 
</body> 
</html> 
--PAA08673.1018277622/server.xyz.com 
" | sendmail -t 

Para los detalles de configuración de Sendmail, consulte este link. Espero que esto ayude.

+0

Si el contenido del correo electrónico se pregenera y se restaura en un archivo llamado content.html, ¿cómo enviarlo a B desde A con sendmail? – omg

+0

si quiere leer el contenido de un archivo externo, puede usar un script bash para leer líneas de un archivo html externo y ponerlo en el campo de datos del correo electrónico O simplemente copiar y pegar el código html. Además, eche un vistazo al enlace proporcionado por el virus. Espero que esto ayude. – Space

+0

La única parte que no tengo claro es: boundary = "PAA08673.1018277622/server.xyz.com". ¿Qué significa? – omg

33

no pude conseguir ninguna de las soluciones enviado a trabajar, pero finalmente encontró esto en otra parte, y funciona muy bien:

(
echo "From: ${from}"; 
echo "To: ${to}"; 
echo "Subject: ${subject}"; 
echo "Content-Type: text/html"; 
echo "MIME-Version: 1.0"; 
echo ""; 
echo "${message}"; 
) | sendmail -t 
+0

Esto funciona bien, la versión MIME no es necesaria, y ahora soy perezoso para buscar las RFC. – NiKiZe

+1

Me funcionó. Gracias –

+1

@NiKiZe MIME-Version * es * obligatorio si usa las funciones MIME tales como 'Content-Type:' que obviamente necesita usar aquí. – tripleee

3

entiendo que pidió Sendmail pero ¿por qué no se utiliza el valor por defecto mail? Puede enviar fácilmente correos electrónicos html.

Works en: RHEL 5,10/6.x & CentOS 5.8

Ejemplo:

cat ~/campaigns/release-status.html | mail -s "$(echo -e "Release Status [Green]\nContent-Type: text/html")" [email protected] -v 

de código compartido: http://www.codeshare.io/8udx5

2

Para dar seguimiento a la respuesta anterior usando mail:

A menudo, la salida html de una persona es interpretada por el cliente de correo, que no puede formatear cosas utilizando un ancho fijo Nuevo Testamento. Por lo tanto, su alineación ascii muy formateada se desordena. Para enviar anticuado de anchura fija la forma en que la intención de Dios, intente esto:

{ echo -e "<pre>" 
echo "Descriptive text here." 
shell_command_1_here 
another_shell_command 
cat <<EOF 

This is the ending text. 
</pre><br> 
</div> 
EOF 
} | mail -s "$(echo -e 'Your subject.\nContent-Type: text/html')" [email protected] 

Usted no necesita un "texto descriptivo aquí." línea, pero he encontrado que a veces la primera línea puede, dependiendo de su contenido, hacer que el programa de correo interprete el resto del archivo en formas que no pretendía. Pruebe la secuencia de comandos con texto descriptivo simple primero, antes de ajustar la salida de la manera que desee.

1

es más fácil de usar, la opción -a:

cat ~/campaigns/release-status.html | mail -s "Release Status [Green]" -a "Content-Type: text/html" [email protected] 
0

opción -a?

Cf. página del manual:

-a file 
      Attach the given file to the message. 

Resultado:

Content-Type: text/html: No such file or directory 
Cuestiones relacionadas