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

当使用bash脚本通过mail发送包含中文的文本文件时,有时内容会被作为附件发送。问题可能由文件的格式或bash环境的编码设置引起。确保文件不是Windows格式,并在脚本中设置正确的LANG环境变量,例如`export LANG=en_US.UTF-8`,以确保正确处理中文字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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运行时系统编码环境不通导致。查看系统编码环境

  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="每周轮值邮件"
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运行时系统编码环境不通导致。查看系统编码环境

  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值