为什么邮件-E让我发送空邮件?

~ > 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如果传出的消息在其第一个或唯一的消息部分中不包含任何文本,则不要发送它,而是静静丢弃它,在程序启动时有效设置skipemptybodyvariables。 这对从cron(8)启动的脚本发送消息很有用。

但是,即使使用-E ,使用echo我的cron脚本仍然会发送空的消息。 会发生什么(基本上)是这样的:

 logmsg="" echo "$logmsg" | mail -E -s "Log Message" [email protected] 

我误解了一些东西吗? 为什么mail -E用空邮件发送邮件?

您的电子邮件包含一个主题,所以它不是空的。 当你尝试发送它没有-s "Log Message"时会发生什么?

HBruijn的评论为我解决了这个问题 – 换句话说:

这封电子邮件已发送:

 echo '' | mail -E -s "echo ''" root 

但是这个不是:

 echo -n '' | mail -E -s "echo -n ''" root