cat sendmail.sh
#!/bin/bash
dutyFile=duty.txt
subject="每周轮值邮件"
tomail=xx@xx.com
frommail=xx@xx.com
cat $dutyFile | /bin/mail -s "$subject" -r "$frommail" "$tomail"
echo "execute time : "`date` >> log2
手动输入命令接收邮件内容却显示正常,crontab 执行正文内容就放到附件了。
网上查了查,两个原因(1)格式问题,也就是dutu.txt文件是不是window下的结束符,如果是需要修改
(2)bash运行时系统编码环境不通导致。查看系统编码环境
- # locale
- LANG=en_US.UTF-8
- LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
- #!/bin/bash
- export LANG=en_US.UTF-8
- 。。
- ...

cat sendmail.sh
#!/bin/bash
dutyFile=duty.txt
subject="每周轮值邮件"
tomail=xx@xx.com
frommail=xx@xx.com
cat $dutyFile | /bin/mail -s "$subject" -r "$frommail" "$tomail"
echo "execute time : "`date` >> log2
手动输入命令接收邮件内容却显示正常,crontab 执行正文内容就放到附件了。
网上查了查,两个原因(1)格式问题,也就是dutu.txt文件是不是window下的结束符,如果是需要修改
(2)bash运行时系统编码环境不通导致。查看系统编码环境
- # locale
- LANG=en_US.UTF-8
- LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
- #!/bin/bash
- export LANG=en_US.UTF-8
- 。。
- ...
