禁止空白电子邮件

禁止空白电子邮件

如何隐藏空白电子邮件?例如,在以下示例中,我将

some command | mail -s "tables altered on `hostname`" [email protected]

发送消息后我收到以下消息:

Null message body; hope that's ok

这不行。如果没有文本,我不想发送邮件。

答案1

#!/bin/sh  

string=`some command`
len=${#string} 
if [ "$len" -gt "0" ]
   then echo $string | mail -s "tables altered on `hostname`" [email protected]
fi  

仅当命令输出至少有 1 个字符长时才会发送邮件,但可能包含空格等。

(上述解决方案有效,但没有必要。man mail显示 -E 选项):

some command | mail -E -s "tables altered on `hostname`" [email protected]

答案2

我使用以下内容:

$ mail --exec 'set nonullbody' -s Test [email protected]

我发现GNU 邮件文档在下面空体部分。

答案3

对于某些mail命令行开关的实现-E,它相当于--exec让你执行命令。在这种情况下daharon 的回答效果很好。你甚至可以将其缩短为:

$ mail -E 'set nonullbody' -s Test [email protected]

如果您想测试此行为,请使用echo带有-n命令行开关的命令来抑制尾随换行符。

此命令发送一封电子邮件:

$ echo -n "something" | mail -E 'set nonullbody' -s Test [email protected]

但是此命令不会发送电子邮件:

$ echo -n "" | mail -E 'set nonullbody' -s Test [email protected]

答案4

例子:

echo -n“”| mail -E -s“日志消息”[电子邮件保护]

解释:

空字符串有结束符,因此我们必须添加 -n 以在此测试中排除 echo \n (cr)。但如果您的正文不存在,则邮件将退出/停止发送。

来源:

为什么 mail -E 让我发送空消息? http://heirloom.sourceforge.net/mailx/mailx.1.html

相关内容