为什么 mail -E 让我发送空消息?

为什么 mail -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 如果传出消息的第一部分或唯一部分不包含任何文本,则不发送该消息,而是默默丢弃它,从而在程序启动时有效地设置 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

相关内容