我有一个SuSE脚本,它调用sendmail向我发送邮件,它在命令行中运行。但是当我把它放在cron工作中时,邮件就不再发送了。
这是我的剧本:
from=zshapm01@wacker.com
to=$1
subject=$2
body=$3
echo "From:$from
To:$to
Subject: $subject
Content-Type: multipart/mixed; boundary="-unique-str"
---unique-str
Content-Type: text/html
Content-Disposition: inline
$body
" | sendmail -t $to
这是来自/ var / log / mail:
的日志Feb 5 11:27:01 zshapm01 postfix/pickup[18721]: DE0F224046: uid=0 from=<root>
Feb 5 11:27:01 zshapm01 postfix/cleanup[27258]: DE0F224046: message-id=<20160205032701.DE0F224046@zshapm01.servers.wacker.corp>
Feb 5 11:27:01 zshapm01 postfix/qmgr[2919]: DE0F224046: from=<root@zshapm01.servers.wacker.corp>, size=599, nrcpt=1 (queue active)
请帮助,谢谢。
答案 0 :(得分:0)
您发布的错误消息中的“发件人”字段为空。
从命令行使用sendmail时,它使用本地环境变量(例如,当您以root用户身份登录时为root帐户),以找出发送帐户是谁。
在错误消息中,您可以看到'from ='为空。因此,当从cron作业使用sendmail时,您必须为其提供一个选项(我认为/ USER = switch)来指定发件人的电子邮件帐户。
根据您使用的sendmail版本,您可能会发现需要另一台交换机,但我认为这就是您的脚本无法发送消息的原因。
答案 1 :(得分:0)
问题解决了。必须在脚本中使用绝对路径:/ sbin / sendmail