mailx Establecer nombre del archivo adjunto

mailx Establecer nombre del archivo adjunto

Tengo un trabajo cron, cuya salida envío a mailx:

# Monday morning at midnight; "mail" is symlink to "mailx"
00 00 * * mon python3 script-with-7500line-output.py | mailx -S 'from=noreply' -s "Report" [email protected]

Cuando se entrega el correo electrónico, la salida del script se encuentra en un archivo adjunto llamado ATT0001.bin.

Nos gusta que adjunte la salida en lugar de colocarla en el cuerpo. Pero: ¿hay alguna manera de establecer el nombre del archivo adjunto?

Respuesta1

Me gusta el comentario de @diya. Lo agregaré aquí como respuesta y le cambiaré "respuesta aceptada" si publica su comentario como respuesta.

"En general, recomiendo escribir un script contenedor para usarlo como trabajo por lotes cuando los requisitos se vuelven menos triviales. Por ejemplo, cree un script de shell que redirija la salida a un archivo temporal con el nombre correcto y luego use mailx -a filename ..."

Respuesta2

Publicando esto en caso de que alguien se encuentre con esto y se pregunte cómo lo hice.

este es un archivo separado... mi producción tiene muchas otras características robustas (manejo de errores; plantilla para mktemp; etc.), pero esto es lo básico:

#!/bin/bash
tmpDir="$(mktemp -d --tmpdir)"
python3 script-with-7500line-output.py > "${tmpDir}/PreferredAttachmentName.txt"
echo "Email Body" | mail -S "from=noreply" -s "Report" -a "${tmpDir}/PreferredAttachmentName.txt" [email protected]
rm -rf "$tmpDir"

información relacionada