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~vseguido de salto de linea en la entrada interactiva demail. - Si
$EDITOResvi(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
$EDITORguardando 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.

![[xml]](/images/xml.gif)
