从命令行发送邮件:消息正文为空

从命令行发送邮件:消息正文为空

我不知怎么就搞不懂了。我借助一个小脚本从命令行发送邮件。但是

echo 'LOREM IPSUM' | mail -s 'SUBJECT' -a 'From:TEST' < /root/recipients.txt

似乎出了问题。邮件已发送,但其中没有任何文本,我收到错误

mail: Null message body; hope that's ok

我在这里做错了什么?

答案1

您正尝试mail同时从两个来源重定向 的标准输入:

  1. 首先echo | mail,它将 echo 的标准输出绑定到 mail 的标准输入(通过管道),取代默认的标准输入(终端);
  2. 然后,您有了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)

相关内容