我已经看到了许多关于如何设置 ssmtp 的示例,但似乎无法找到明确的答案如何配置 crontab 以将数据发送到电子邮件。我想要完成的是一个 crontab 配置,它将发送带有系统统计信息的电子邮件
- 每 12 小时
- 每次开机。(@重启)
我已经正确安装和配置了 ssmtp,因为我可以通过例如发送电子邮件
printf "Subject:Test\n\rthis is a test\n\r" |ssmtp mail@domain.com"
并且它完全按预期工作。但是,从 cron 执行完全相同的操作会导致命令被视为邮件的字符串。所有反引号都被忽略。
在这里,我将其设置为每分钟:
MAILTO="mail_user@domain.com"
* * * * * bash -c 'printf "Subject:Test\n\rthis is (`date`) a test\n\r" | ssmtp mail_user@domain.com'
并接收:
SUBJECT:
Cron <user@host> printf "Subject:Test\n\rthis is (`date`) a test\n\r" |/usr/bin/ssmtp mail_user@domain.com`
CONTENT:
bash: ssmtp: command not found
其中user@host是我的本地用户和 pc 主机,而mail_user@domain.com是应该用于发送数据的实际电子邮件。我尝试提供完整路径 /user/bin/ssmtp 而不仅仅是 ssmtp 无济于事
免责声明:这是一个简化的示例,我想将更多数据邮寄到我的监控电子邮件(Gmail 帐户)
更新
我不得不将表格更改/usr/bin/ssmtp
为/usr/sbin/sftmp
表明我的问题与我最初想象的有些不同。电子邮件已正确发送,但同时 crontab 正在发送带有命令的旧“电子邮件”作为主题中的字符串。我从我的 crontab 中删除了所有MAILTO=
部分,但是虽然我仍然可以发送正确的电子邮件,但我的电子邮件中仍然有 CRON 命令(不知道如何更好地表达它)。
总结一下 - 每个 crontab 任务我会收到两封电子邮件,一封是实际的电子邮件,另一封是尝试从 email_user@gmail.com 发送用户名@主机名的传递失败