mailx Definir nome do arquivo anexado

mailx Definir nome do arquivo anexado

Eu tenho um cron job, cuja saída envio para 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]

Quando o e-mail é entregue, a saída do script está em um anexo chamado ATT0001.bin.

Gostamos que ele anexe a saída em vez de colocá-la no corpo. Mas: existe uma forma de definir o nome do anexo?

Responder1

Eu gosto do comentário do @diya. Acrescentarei aqui como resposta e transferirei "resposta aceita" para ele se ele postar seu comentário como resposta.

"Geralmente eu recomendo escrever um script wrapper para usar como trabalho em lote quando os requisitos se tornarem menos que triviais. por exemplo, faça um script de shell que redirecione a saída para um arquivo temporário com o nome correto e então use mailx -a filename ..."

Responder2

Postando isso para o caso de alguém se deparar com isso e se perguntar como eu fiz isso.

este é um arquivo separado... minha produção tem vários outros recursos de robustez (tratamento de erros; modelo para mktemp; etc), mas este é o 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"

informação relacionada