Sendmail无法使用crontab(bash)

时间:2014-05-19 11:46:46

标签: bash sendmail crontab

我创建了一个磁盘清理脚本,在清理后发送状态电子邮件。现在,当我通过命令行运行它时,它执行完美,但通过cronjob它无法发送staus邮件休息,脚本工作正常。我在谷歌阅读了很多解决方案,但没有什么对我有用。我在我的Ubuntu机器上使用Bash。这是sendmail的一部分我的脚本。

export CONTENT="/root/cleanup/cleanup.htm"                                           
export SUBJECT="Disk Space Clean Up Process : Completed @ $date_time"

(echo "Subject: $SUBJECT"
echo "`cat sendmail_list.txt`"
echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $CONTENT
)|/usr/sbin/sendmail -t 

请帮我知道解决方案......谢谢

2 个答案:

答案 0 :(得分:9)

请在sh file:

中的sendmail之前添加/usr/sbin
/usr/sbin/sendmail "user@domain.com" < file.txt 

希望它有助于https://stackoverflow.com/editing-help

答案 1 :(得分:3)

邮件标题和正文之间需要一个空行。

{
    echo "Subject: $SUBJECT"
    echo "$(< sendmail_list.txt)"
    echo "MIME-Version: 1.0"
    echo "Content-Type: text/html"
    echo "Content-Disposition: inline"
    echo ""
    cat $CONTENT
} | /usr/sbin/sendmail -t 

其他一些事情:

  • 这里不需要子shell,因此我将周围的括号更改为大括号
  • 因为这是bash,所以有$(cat file)的简写 - $(< file)