无法弄清楚如何在bash脚本中向邮件发送^ D(EOT)信号

时间:2013-11-05 20:47:35

标签: bash email mailx eot

我正在编写一个bash脚本来自动向我发送电子邮件。 Mailx需要一个EOT或^ D信号来知道消息体已经结束并且它可以发送。 当我运行脚本时,我不想在键盘上按^ D.

这是我的代码:

#! /bin/bash
SUBJ="Testing"
TO="test@test.com"
MSG="message.txt"

echo "I am emailing you" >> $MSG
echo "Time: `date` " >> $MSG

mail -s "$SUBJ" -q "$MSG" "$TO"

rm -f message.txt

2 个答案:

答案 0 :(得分:5)

如果您不需要添加更多文字而只需要发送$ MSG的内容,则可以替换

mail -s "$SUBJ" -q "$MSG" "$TO"

mail -s "$SUBJ" "$TO" < "$MSG"

EOT将隐含在<构造中。 -q确实只用于启动消息。其余的应该是通过stdin。

答案 1 :(得分:2)

将命令组的输出传递给mail

#! /bin/bash
SUBJ="Testing"
TO="test@test.com"
MSG="message.txt"

{
  echo "I am emailing you"
  echo "Time: `date` "
} | mail -s "$SUBJ" -q "$MGS" "$TO"

rm -f message.txt