我正在调整我的 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]
但是这会给我发送一封空邮件。备份脚本已运行,因为我可以看到所有文件都是最新的,但是电子邮件中没有文本。
如果我将其改回此,电子邮件将包含我想要的备份脚本的所有输出:
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]>"