Mandar un adjunto con mail(1), otra vez
Mira que es fácil, pero alguna vez me había pasado que al enviar un correo con mail(1)
, se me planteaba la necesidad de añadir un adjunto... y siempre tomaba la decisión equivocada: emplear base64
. Y encima ya lo había explicado por aquí :(.
En realidad lo más sencillo es usar la codificación uuencode
, que precisamente para eso está ;).
¿La diferencia? Resulta que la codificación base64
se usa integrada con MIME
(que no es otra cosa que Multipurpose Internet Mail Extensions :D), mediante Content-Transfer-Encoding
, pero los clientes de correo no suelen manejar bien un pegote en base64
en medio del cuerpo de un mensaje sin MIME
(usando simplemente el formato descrito en el RFC822), y mail
no soporta MIME
.
Pero esto no ocurre con uuencode
, ya que no hay previsión en MIME
para usarlo, con lo que nos podemos encontrar un binario codificado dentro del cuerpo del mensaje en texto plano... y los MUA
lo saben ;).
En realidad es muy fácil, y tan delante de las narices estaba, que no lo veía. Por ejemplo, hacemos un mail prueba@usuario.dom
:
- Escribimos el correo normalmente, por ejemplo con
$EDITOR
(empleando~v
seguido de salto de linea en la entrada interactiva demail
. - Si
$EDITOR
esvi
(espero que sí :P), podemos ejecutar:re ! uuencode fichero_adjunto fichero_adjunto
, y se leerá en el cuerpo del mensaje la salida deuuencode
. El primer argumento es el nombre que tendrá en el adjuntoes y el segundo el fichero a adjuntar. - Mandamos en correo normalmente (salimos de
$EDITOR
guardando el texto, e introducimos un punto seguido de salto de linea).
En el editor veremos algo como:
Hola,
Adjunto texto comprimido con gzip.
Un saludo.
Juanjo
begin 644 texto.txt.gz
M'XL("/W3B$8``W1E>'1O+G1X=``=S,L-@"`0A.'[5K$%$`KP8DSLP`J(3B(&
M=I''@>Y%+G/ZOSG`I245\-O`*%7'<!/&@YB"&NHLRM5C)-%US>RE(J-8:XFV
;XG]HIK[=.6Q`AUPZOU:B92?Z`-<(E2IE````
`
end
Y la mayoría de los MUA
extraerán ese bloque y nos mostrarán un adjunto normal, de forma transparente.
Dependiendo de la versión de uuencode
se podrá usar esta misma herramienta para extraer adjuntos de un fichero tipo mailbox
o en formato RFC822
, o puede que necesitemos uudecode
; esto en caso de que nuestro MUA
no procese bien el adjunto.
Por si a alguien le interesa, existe documentación sobre el algoritmo de uuencode, que está cubierto por el estándar POSIX
.
Hay 2 comentarios
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.
por Gura, en 2007-07-02 17:24:28 ∞