mailx Установить имя прикрепленного файла

mailx Установить имя прикрепленного файла

У меня есть задание cron, вывод которого я отправляю на 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]

После доставки электронного письма выходные данные скрипта сохраняются во вложении с именем ATT0001.bin.

Нам нравится, что он прикрепляет вывод, а не помещает его в тело. Но: есть ли способ задать имя вложения?

решение1

Мне нравится комментарий @diya. Я добавлю сюда как ответ и перенесу "принятый ответ" на него, если он опубликует свой комментарий как ответ.

«Обычно я рекомендую писать скрипт-оболочку для использования в качестве пакетного задания, когда требования становятся менее тривиальными. Например, создайте скрипт оболочки, который перенаправляет вывод во временный файл с правильным именем, а затем используйте mailx -a filename ...«

решение2

Публикую это на всякий случай, если кто-то наткнётся на это и задастся вопросом, как я это сделал.

это отдельный файл... в моем продукте есть куча других функций обеспечения надежности (обработка ошибок; шаблон для mktemp и т. д.), но это основы:

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

Связанный контент