Pero esta vez con un hack algo tonto que nos va a permitir enviar correos con soporte MIME en nuestros scripts con mail(1), pero sin tener que llegar a modificar el fuente.
Cuando ejecutamos mail, podemos indicar el asunto del mensaje con la opción -s, y el programa no verificará la entrada.
$ echo "Hola mundo!" | mail -s "Esto es un ejemplo" juanjo@localhost
Con esta linea se recibirá el siguiente mensaje:
From reidrac@... Fri Feb 9 18:54:26 2007
X-Bogosity: Ham, spamicity=0.196944
Received: from llsa336-a01.servidoresdns.net (...net [82.223.190.*])
by blackshell.usebox.net (8.13.4/8.13.4) with ESMTP id l198sQW3029026
for <juanjo@...>; Fri, 9 Feb 2007 18:54:26 +0100 (CET)
Received: from localhost (*.onocable.ono.com [84.120.179.*])
by smtp-01.servidoresdns.net (Postfix) with ESMTP id 348034A3D0
for <juanjo@...>; Fri, 9 Feb 2007 18:53:57 +0100 (CET)
To: juanjo@...
Subject: Esto es un ejemplo
Message-Id: <20070209175357.348034A3D0@smtp-01.servidoresdns.net>
Date: Fri, 9 Feb 2007 18:53:57 +0100 (CET)
From: reidrac@...
Status: R
Hola mundo!
He resaltado la linea importante que nos permitirá realizar nuestro hack. Supongamos que queremos mandar un correo HTML de forma correcta, haríamos algo tal que:
$ echo "<p><b>Hola</b> <em>mundo!</em></p>" \ | mail -s "Esto es un ejemplo^MMIME-Version: 1.0^MContent-Type: text/html" \ juanjo@localhost
Con lo que obtendríamos el siguiente correo:
From reidrac@... Fri Feb 9 19:12:03 2007
X-Bogosity: Unsure, spamicity=0.485422
Received: from llsa736-a01.servidoresdns.net (...net [82.223.190.*])
by blackshell.usebox.net (8.13.4/8.13.4) with ESMTP id l19BC3Em009642
for <juanjo@...>; Fri, 9 Feb 2007 19:12:03 +0100 (CET)
Received: from localhost (*.onocable.ono.com [84.120.179.*])
by smtp-01.servidoresdns.net (Postfix) with ESMTP id D7D0C24C330
for <juanjo@...>; Fri, 9 Feb 2007 19:11:34 +0100 (CET)
To: juanjo@...
Subject: Esto es un ejemplo
MIME-Version: 1.0
Content-Type: text/html
Message-Id: <20070209181134.D7D0C24C330@smtp-01.servidoresdns.net>
Date: Fri, 9 Feb 2007 19:11:34 +0100 (CET)
From: reidrac@...
Status: R
<p><b>Hola</b> <em>mundo!</em></p>
Creo que está claro lo que hemos hecho :). Simplemente añadimos dos cabeceras tras el subject empleando el salto de linea (CTRL + v seguido de CRTL + m en el shell), que es el limitador que indica el RFC822 para las cabeceras en los mensajes de correo electrónico.
Esto a mail(1) le da igual, y para nuestro cliente de correo será importante porque, efectivamente, hemos enviado un mensaje en formato HTML, y gracias a las nuevas cabeceras se mostrará correctamente ;).
A tener en cuenta:
- Dependiendo del shell, no siempre prepararemos las cabeceras igual. En mi caso he comprobado que con
BASHel método descrito funciona, pero conKSHno. Podemos prepara el asunto aparte conecho(1)(algo así comoSUBJECT="$(echo -e "Asunto\nExtra: valor")", y luego incluimos la variable enmail -s "$SUBJECT" ...). - No podemos indicar cabeceras de las que ya se encarga
mail(1). - Esto es un hack ;).
![[xml]](/images/xml.gif)
