我不知怎么就搞不懂了。我借助一个小脚本从命令行发送邮件。但是
echo 'LOREM IPSUM' | mail -s 'SUBJECT' -a 'From:TEST' < /root/recipients.txt
似乎出了问题。邮件已发送,但其中没有任何文本,我收到错误
mail: Null message body; hope that's ok
我在这里做错了什么?
答案1
您正尝试mail
同时从两个来源重定向 的标准输入:
- 首先
echo | mail
,它将 echo 的标准输出绑定到 mail 的标准输入(通过管道),取代默认的标准输入(终端); - 然后,您有了
mail < recipients.txt
将文件绑定到邮件的标准输入,从而取代任何先前的重定向。
重要的是,它不结合两个输入。如果需要这样做,请使用cat
命令分组的某种组合:
(cat recipients.txt; echo 'Hello world') | mail -s ...
仅限 bash:
cat recipients.txt <(echo 'Hello world') | mail -s ...
虽然在这种情况下,将收件人列表传递为命令行参数而不是输入:
echo 'Hello world' | mail -s ... $(cat recipients.txt)