我正在用我的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] 0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" -a "From:Slave1<[email protected]>" [email protected]
来源: 如何更改来自Cron电子邮件的“From:”字段?
但是,这给我一个空的电子邮件。 运行备份脚本是因为我可以看到所有文件都是最新的,但是电子邮件中没有文本。
如果我将其更改回此,则电子邮件将包含备份脚本的所有输出,如下所示: MAILTO: [email protected] 0 3 * * * /root/bin/backup.sh
我需要做些什么才能让mailutils发送cronjob的输出?
Cronjob看起来不错,我只是改变了邮件工具中的一个参数的地方,它开始发送脚本输出的电子邮件。
0 3 * * * /root/bin/backup.sh 2>&1 | mail -s "Slave1 Backup" [email protected] -a "From:Slave1<[email protected]>"
这似乎是我的邮件客户端比cronjob本身更多的问题。 我注意到Thunderbird会在预览通知中正确显示电子邮件文本,当您收到Thunderbird打开的电子邮件时,会popup预览通知。
然而,当点击雷鸟内部的电子邮件时,它是空的,不包含任何文本。 所以我想它可能与一个空的HTML内容有关。 我可以通过将mailutils中的headers参数修改为-a "Content-type: text/html;From:Slave3<[email protected]>"来解决这个问题。
给mail命令添加-E参数,意思是“如果主体为空,不要发送任何消息”。
因此,将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可执行文件来自s-nail包。 GNU mailutils不支持-E参数,所以我的解决scheme不起作用。
您可以使用heirloom-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]