Cronjob:mailutils 中带有 Cronjob 输出的电子邮件为空

Cronjob:mailutils 中带有 Cronjob 输出的电子邮件为空

我正在调整我的 cronjobs 以更改 cronjob 发送的电子邮件的发件人和主题。为了发送电子邮件,我在 Ubuntu 14.04 上安装了 mailutils 包。

以下是我从 cronjob 发送电子邮件的方式: 0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" -a "From:Slave1<[email protected]>" [email protected]

来源:如何更改 Cron 电子邮件的“发件人:”字段?

但是这会给我发送一封空邮件。备份脚本已运行,因为我可以看到所有文件都是最新的,但是电子邮件中没有文本。

如果我将其改回此,电子邮件将包含我想要的备份脚本的所有输出: MAILTO: [email protected] 0 3 * * * /root/bin/backup.sh

我必须进行哪些更改才能使 mailutils 发送来自 cronjob 的输出?

答案1

-E向命令添加参数mail,表示“如果正文为空,则不发送任何消息”。

因此,将 crontab 行更改为:

0 3 * * * /root/bin/backup.sh 2>&1 | mail -E -s "Slave1 Backup" -a "From:Slave1<[email protected]>" [email protected]

在我的系统 (Arch Linux) 中,该-a参数似乎不会更改From:地址。也许需要将 crontab 行更改为以下内容:

0 3 * * * /root/bin/backup.sh 2>&1 | mail -E -s "Slave1 Backup" -Sfrom='Slave1 <[email protected]>' [email protected]

编辑:实际上我的mail可执行文件来自蜗牛包。该-E参数不支持GNU 邮件工具,所以我的解决方案不起作用。

您可以使用传家宝-mailx而不是 GNU Mailutils。安装heirloom-mailx包并将 crontab 行修改为:

 0 3 * * * /root/bin/backup.sh 2>&1 | heirloom-mailx -E -s "Slave1 Backup" -Sfrom='Slave1 <[email protected]>' [email protected]

答案2

Cronjob 看起来不错,我只是改变了邮件实用程序中一个参数的位置,它就开始发送带有脚本输出的电子邮件。

0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" [email protected] -a "From:Slave1<[email protected]>"

答案3

看起来这更像是我的邮件客户端的问题,而不是 cronjob 本身的问题。我注意到,当您打开 Thunderbird 收到电子邮件时,Thunderbird 会在弹出的预览通知中正确显示电子邮件文本。

但是,当单击 Thunderbird 内部的电子邮件时,它是空的,不包含任何文本。所以我认为这可能与空的 HTML 内容有关。我可以通过将 mailutils 中的 headers 参数更改为 -a "Content-type: text/html;From:Slave3<[email protected]>"

相关内容