Назад | Перейти на главную страницу

Cronjob: электронная почта с выводом Cronjob из mailutils пуста

Я пытаюсь изменить отправителя и тему писем, отправленных cronjobs. Для отправки писем я установил пакет mailutils в Ubuntu 14.04.

Вот как я отправляю письмо из cronjob: 0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" -a "From:Slave1<slave3@example.com>" cronjob@example.com

Источник: Как изменить поле «От:» для писем из Cron?

Однако это отправляет мне пустое электронное письмо. Сценарий резервного копирования запущен, потому что я вижу, что все файлы обновлены, однако электронное письмо не содержит текста.

Если я изменю его обратно на это, электронные письма будут содержать весь вывод сценария резервного копирования, как я хочу: MAILTO: cronjob@example.com 0 3 * * * /root/bin/backup.sh

Что мне нужно изменить, чтобы mailutils отправлял вывод задания cron?

Добавить -E аргумент к mail команда, что означает «не отправлять сообщения, если тело пусто».

Поэтому измените строку crontab на:

0 3 * * * /root/bin/backup.sh 2>&1 | mail -E -s "Slave1 Backup" -a "From:Slave1<slave3@example.com>" cronjob@example.com

В моей системе (Arch Linux) -a параметр, похоже, не меняет From: адрес. Возможно, вместо этого нужно изменить строку crontab на это:

0 3 * * * /root/bin/backup.sh 2>&1 | mail -E -s "Slave1 Backup" -Sfrom='Slave1 <slave3@example.com>' cronjob@example.com

РЕДАКТИРОВАТЬ: Собственно, мой mail исполняемый файл исходит из гвоздь пакет. В -E аргумент не поддерживается GNU mailutils, поэтому мое решение не работает.

Ты можешь использовать семейная реликвия вместо GNU Mailutils. Установите heirloom-mailx package и измените строку crontab на:

 0 3 * * * /root/bin/backup.sh 2>&1 | heirloom-mailx -E -s "Slave1 Backup" -Sfrom='Slave1 <slave3@example.com>' cronjob@example.com

Похоже, это была больше проблема с моим почтовым клиентом, чем с самим cronjob. Я заметил, что Thunderbird правильно отображает текст электронного письма в уведомлении о предварительном просмотре, которое появляется, когда вы получаете электронное письмо с открытым Thunderbird.

Однако при нажатии на электронное письмо внутри самого Thunderbird оно было пустым и не содержало текста. Поэтому я подумал, что это может быть связано с пустым содержимым HTML. Я мог бы исправить это, изменив параметр заголовков в mailutils на -a "Content-type: text/html;From:Slave3<slave3@spiele-palast.de>"

Cronjob выглядит нормально, я просто изменил место одного параметра в почтовой утилите, и он начинает отправлять электронную почту с выводом скрипта.

0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" cronjob@example.com -a "From:Slave1<slave3@example.com>"