Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ssmtp格式化来自crontab的电子邮件_Cron_Printf_Ssmtp - Fatal编程技术网

使用ssmtp格式化来自crontab的电子邮件

使用ssmtp格式化来自crontab的电子邮件,cron,printf,ssmtp,Cron,Printf,Ssmtp,我已经看到了许多关于如何设置ssmtp的示例,但似乎找不到关于如何配置crontab以将数据发送到电子邮件的明确答案。 我想要完成的是一个crontab配置,它将发送带有系统统计信息的电子邮件 每12小时 每次开机时。(@reboot) 我已经正确安装和配置了ssmtp,因为我可以发送电子邮件,例如 printf“主题:测试\n\r这是一个测试\n\r”| ssmtpmail@domain.com“ 但是,从cron执行完全相同的操作会导致命令被视为邮件的字符串。所有反引号都被忽略 在这里,

我已经看到了许多关于如何设置ssmtp的示例,但似乎找不到关于如何配置crontab以将数据发送到电子邮件的明确答案。 我想要完成的是一个crontab配置,它将发送带有系统统计信息的电子邮件

  • 每12小时
  • 每次开机时。(@reboot)
我已经正确安装和配置了ssmtp,因为我可以发送电子邮件,例如
printf“主题:测试\n\r这是一个测试\n\r”| ssmtpmail@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'
并收到:

主题:
Cron printf“Subject:Test\n\r这是(`date`)一个测试\n\r“|/usr/bin/ssmtp邮件_user@domain.com` 
内容:
bash:ssmtp:未找到命令
其中user@host是我的本地用户和pc主机以及邮件_user@domain.com是应用于发送数据的实际电子邮件。 我尝试提供完整路径/user/bin/ssmtp,而不是仅提供ssmtp,但没有效果

免责声明: 这是一个简化的示例,我想将更多数据发送到我的监控电子邮件(gmail帐户)

更新

我不得不将表单
/usr/bin/ssmtp
更改为
/usr/sbin/sftmp
,这表明我的问题与我最初认为的有所不同。电子邮件发送正确,但同时crontab正在发送旧的“电子邮件”“将命令作为主题中的字符串。我从crontab中删除了所有
MAILTO=
部分,但尽管我仍然可以发送正确的电子邮件,但我仍然在电子邮件中写入了CRON命令(不知道如何更好地表达它)

总而言之,每个crontab任务我会收到两封电子邮件,一封是实际的电子邮件,另一封是atempt to mail的传递失败username@hostname从电子邮件_user@gmail.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