~ > which mail
/bin/mail
~ > ls -la /bin/mail
lrwxrwxrwx 1 root root 22 Feb 25 14:18 /bin/mail -> /etc/alternatives/mail
根据man mail
,
-E 如果传出消息的第一部分或唯一部分不包含任何文本,则不发送该消息,而是默默丢弃它,从而在程序启动时有效地设置 skipemptybody 变量。这对于从 cron(8) 启动的脚本发送消息非常有用。
但是,即使使用了-E
,我的 cron 脚本(使用echo
)仍然会发送空消息。发生的事情(本质上)是这样的:
logmsg=""
echo "$logmsg" | mail -E -s "Log Message" [email protected]
我是不是误会了什么?为什么mail -E
发送的电子邮件内容为空?
答案1
您的电子邮件包含主题,因此它不为空。如果您尝试发送时不包含主题,会发生什么情况-s "Log Message"
?
答案2
HBruijn 的评论为我解决了这个问题 – 换句话说:
该电子邮件已发送:
echo '' | mail -E -s "echo ''" root
但这个不是:
echo -n '' | mail -E -s "echo -n ''" root