这是我在作为 cronjob 运行的 bash 脚本中的代码。cronjob 以 root 身份运行。
/usr/sbin/sendmail [email protected]<<EOF
subject:Backup Error!
from:backup@server01
$error
EOF
这之后有代码,我收到的电子邮件如下:
从机器上的 root 用户。
并且该消息包括:
subject:Backup Error!
from:backup@server01
$error
EOF
More code...
that is in the script
all the way to the end...
我尝试过其他变体,这是我找到的最接近的变体。我在常规脚本中尝试过,效果很好。发生了什么,我该如何发送这封电子邮件,并指定主题和表单发件人?
答案1
前面的回答已经提到了:
- “此处文档”的坏结尾(END)
- 标题和正文之间缺少空行
其他修复:
-i
命令行选项停止对以点开头的行进行特殊处理--
将命令行选项与收件人地址分开(良好的风格建议)
修正脚本:
/usr/sbin/sendmail -i -- [email protected] <<EOF
subject: Backup Error!
from:backup@server01
$error
EOF
答案2
我建议您不要在第二个限制字符串的前面或后面使用任何空格字符EOF
。如果您在限制字符串的前面或后面仅使用一个空格,则该特殊用途的代码块将永远无法工作。因此,仅使用:
EOF
你应该读一些这样的 Bash 脚本指南,比如第 19 章 此处文档。
答案3
Sendmail(似乎电子邮件也是这样)要求在标题和正文之间留一个空行。以下示例有效。
$ sendmail [email protected] <<EOF
> subject: testing
> from: [email protected]
>
> This is my body!
> EOF
(显然,将其与其中的 s 一起粘贴是>
行不通的,只需改变您正在执行的操作,以便在标题和错误消息之间有一个空白行)。