linux mail发送中文正文变成附件的处理



cat sendmail.sh 
#!/bin/bash

dutyFile=duty.txt
subject="每周轮值邮件"
[email protected]
[email protected]


cat $dutyFile | /bin/mail -s "$subject" -r "$frommail" "$tomail"


echo "execute time : "`date` >> log2


手动输入命令接收邮件内容却显示正常,crontab 执行正文内容就放到附件了。

网上查了查,两个原因(1)格式问题,也就是dutu.txt文件是不是window下的结束符,如果是需要修改

(2)bash运行时系统编码环境不通导致。查看系统编码环境

  1. # locale  
  2. LANG=en_US.UTF-8
  3. 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"
把发送命令更改为
  1. #!/bin/bash  
  2. export LANG=en_US.UTF-8
  3. 。。
  4. ...  
则是接收邮件就正常显示为中文了。 linux

cat sendmail.sh 
#!/bin/bash

dutyFile=duty.txt
subject="每周轮值邮件"
[email protected]
[email protected]


cat $dutyFile | /bin/mail -s "$subject" -r "$frommail" "$tomail"


echo "execute time : "`date` >> log2


手动输入命令接收邮件内容却显示正常,crontab 执行正文内容就放到附件了。

网上查了查,两个原因(1)格式问题,也就是dutu.txt文件是不是window下的结束符,如果是需要修改

(2)bash运行时系统编码环境不通导致。查看系统编码环境

  1. # locale  
  2. LANG=en_US.UTF-8
  3. 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"
把发送命令更改为
  1. #!/bin/bash  
  2. export LANG=en_US.UTF-8
  3. 。。
  4. ...  
则是接收邮件就正常显示为中文了。 linux

你可能感兴趣的:(linux)