mailx Namen der angehängten Datei setzen

mailx Namen der angehängten Datei setzen

Ich habe einen Cronjob, dessen Ausgabe ich an mailx sende:

# 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]

Wenn die E-Mail zugestellt wird, befindet sich die Ausgabe des Skripts in einem Anhang mit dem Namen ATT0001.bin.

Uns gefällt, dass die Ausgabe angehängt wird, anstatt sie in den Text einzufügen. Aber: Gibt es eine Möglichkeit, den Namen des Anhangs festzulegen?

Antwort1

Mir gefällt der Kommentar von @diya. Ich werde ihn hier als Antwort hinzufügen und ihm „akzeptierte Antwort“ zukommen lassen, wenn er seinen Kommentar als Antwort postet.

„Im Allgemeinen empfehle ich, ein Wrapper-Skript zu schreiben, das als Batch-Job verwendet werden kann, wenn die Anforderungen nicht mehr so ​​trivial sind. Erstellen Sie beispielsweise ein Shell-Skript, das die Ausgabe in eine temporäre Datei mit dem richtigen Namen umleitet, und verwenden Sie dann mailx -a filename ...

Antwort2

Ich poste das nur für den Fall, dass jemand darauf stößt und sich fragt, wie ich das gemacht habe.

dies ist eine separate Datei. Meine Produktion verfügt über eine Reihe weiterer Robustheitsfunktionen (Fehlerbehandlung, Vorlage für mktemp usw.), aber dies sind die Grundlagen:

#!/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"

verwandte Informationen