Extendiendo a mail, otra vez
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
BASH
el método descrito funciona, pero conKSH
no. 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 ;).
Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.