Código KornShell (ksh) para enviar archivos adjuntos con mailx y uuencode?

Necesito adjuntar un archivo con mailx pero por el momento no estoy teniendo éxito.

Aquí está mi código:

subject="Something happened"
to="[email protected]"
body="Attachment Test"
attachment=/path/to/somefile.csv

uuencode $attachment | mailx -s "$subject" "$to" << EOF

The message is ready to be sent with the following file or link attachments:

somefile.csv

Note: To protect against computer viruses, e-mail programs may prevent
sending or receiving certain types of file attachments.  Check your
e-mail security settings to determine how attachments are handled.

EOF

Cualquier comentario sería muy apreciado.


Update I have added the attachment var to avoid having to use the path every time.

0
agregado editado
Puntos de vista: 1

2 Respuestas

Tienes que hacer coincidir el texto de tu mensaje y el adjunto uuencoded:

$ subject="Something happened"
$ to="[email protected]"
$ body="Attachment Test"
$ attachment=/path/to/somefile.csv
$
$ cat >msg.txt < The message is ready to be sent with the following file or link attachments:
>
> somefile.csv
>
> Note: To protect against computer viruses, e-mail programs may prevent
> sending or receiving certain types of file attachments.  Check your
> e-mail security settings to determine how attachments are handled.
>
> EOF
$ ( cat msg.txt ; uuencode $attachment somefile.csv) | mailx -s "$subject" "$to"

Hay diferentes maneras de proporcionar el texto del mensaje, este es solo un ejemplo que está cerca de su pregunta original. Si el mensaje se debe reutilizar, tiene sentido simplemente almacenarlo en un archivo y usar este archivo.

0
agregado
¡Gracias por la respuesta! Entonces el mensaje de texto está siendo creado por el EOF y luego reutilizado en la última línea?
agregado el autor Nano Taboada, fuente
Lanza el siguiente error: cat: no se puede abrir msg.txt
agregado el autor Nano Taboada, fuente
¡Mi error! He espaciado el gato> msg.txt << EOF
agregado el autor Nano Taboada, fuente

Bueno, aquí están los primeros problemas que tienes.

  1. Parece que está asumiendo que un cliente de correo va a manejar archivos adjuntos sin codificador sin encabezados. Eso no sucederá.

  2. Está haciendo un uso indebido de la redirección de E/S: la salida de uuencode y el documento aquí se están enviando a mailx, lo que no puede suceder.

  3. Estás mal usando uuencode: si se da una ruta, es solo un nombre para dar el archivo decodificado, no un nombre de archivo de entrada. Dar el archivo dos veces asignará el mismo nombre al archivo decodificado que el que se leyó. La bandera -m fuerza la codificación de base64. Pero esto aún no proporcionará encabezados de archivos adjuntos para mailx.

Es mucho mejor que consigas una copia de mpack, que hará lo que quieras.

Si debe hacerlo, podría hacer algo como esto:

cat <

Hay muchas otras posibilidades ... pero esta todavía tiene el documento aquí como en su ejemplo y fue fácil de entender, y no hay archivos temporales involucrados.

0
agregado
¡Muchas gracias! Sí, he visto que hay mutt que puede hacer archivos adjuntos simples, pero como no estoy en la raíz de ese cuadro, tendría que lidiar con cualquier ataque de mailx.
agregado el autor Nano Taboada, fuente
Usted tiene una versión anterior de uuencode, antes de proporcionar la codificación base64 ... aún podría obtener mpack y compilarlo para usarlo localmente en su cuenta ... eso es lo que probablemente haría.
agregado el autor Thomas Kammeyer, fuente