Crear un correo electrónico multiparte y enviarlo en Linux


12

Usamos mutt para enviar correos electrónicos.

mutt -s "Test" -e "Content-Type: text/html" test@example.com < message.html

Enviamos nuestras actualizaciones por correo electrónico en formato HTML. Nos gustaría enviar correos electrónicos en varias partes que contengan tanto una versión de texto como una versión html.

  1. ¿Cómo creamos un mensaje multiparte en Linux cuando se proporcionan el asunto del correo electrónico y las versiones HTML y de texto del cuerpo del correo electrónico?
  2. ¿Podemos usar mutt para enviar el correo electrónico multiparte creado en el paso 1, desde el indicador de Linux?

Entorno: RedHat Enterprise Linux 5, mutt

Respuestas:


10

¿Cómo creamos un mensaje multiparte en Linux cuando se proporcionan el asunto del correo electrónico y las versiones HTML y de texto del cuerpo del correo electrónico?

Cree un mensaje de tipo multipart/alternativecomo se documenta en RFC 2046 :

De: Empresa ejemplo <news@example.com>
Para: Usuario Joe <joe.u@example.net>
Fecha: sábado 21 de mayo de 2011 17:40:11 +0300
Asunto: ejemplo de mensaje multiparte
Versión MIME: 1.0
Tipo de contenido: multiparte / alternativa; límite = asdfghjkl

--asdfghjkl
Tipo de contenido: texto / sin formato; charset = utf-8

¡Hola a todos!

--asdfghjkl
Tipo de contenido: texto / html; charset = utf-8

<! DOCTYPE html>
<cuerpo>
<p> ¡Hola a todos! </p>
</body>

--asdfghjkl--

Ver RFC 2046 y RFC 5322 para la sintaxis exacta.

¿Podemos usar mutt para enviar el correo electrónico multiparte creado en el paso 1, desde el indicador de Linux?

Si encuentra una manera de establecer el encabezado de tipo de contenido correcto. (En su ejemplo, está usando -e, pero mutt lo usa -epara diferentes propósitos. Incluso -e "my_hdr Content-Type: ..."deja intacto el texto original / encabezado sin formato).

Es mejor enviar el correo generado directamente a través de sendmail. Tendrá que crear los encabezados usted mismo; vea el ejemplo; use strftime("%a, %d %b %Y %T %z")para Fecha y una cadena de caracteres alfanuméricos aleatorios para el límite. Luego canalice el mensaje preparado, incluidos los encabezados, a sendmail -i -t:

sendmail -i -t < above-example.txt

(La -topción significa "obtener destinatarios de la línea Para: "; puede usar alternativamente sendmail -i joe.u@example.net)


Gracias por la gran respuesta, Grawity! Gracias también por explicar en detalle cómo componer un correo electrónico multiparte. :)
user544192

0

Echa un vistazo a https://github.com/shivylp/mailprod . Desarrollé esta pequeña utilidad / biblioteca de Python ya que el uso de la línea de comandos para correos grandes no parecía ser una opción confiable. Con mailprodcli es tan simple como decir mailprodcli template.xml --send. Ejemplo template.xml que incluso incluye una imagen es tan simple como:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>sender@source.com</from>
  <to>recipient1@destination1.com</to>
  <to>recipient2@destination2.com</to>
  <body type="text/html">
    <![CDATA[<html>
<b>Neat!</b><br><center><img src="cid:sample"></center>
</html>]]>
  </body>
  <body type="image" src="sample.png" id="sample" />
</mail>

¿Esto también enviará una versión de texto sin formato? Creo que OP quiere enviar un correo electrónico de varias partes donde se incluye contenido HTML y de texto sin formato en el mismo mensaje.
cascer1
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.