mail 工具发送中文内容邮件

因为需要从linux命令行发送邮件,所以稍微研究了一下mail工具(环境Debian 5.0  64bit MTA由EXIM4 提供,使用zh_cn.utf-8语言环境,bash命令行环境)。

开始使用

》mail -s <主题><xxx@emailhost><<emailtextfile>

形式发送,英文很正常,但中文有乱码,后研究mail的手册,采用
 

》mail -a "Content-Type:text/plain;charset=utf-8"-s <主题><xxx@emailhost><<emailtextfile>

形式来发送,则文件具体内容正常了,但如果邮件主题中有中文,则还是显示乱码,看来"Content-Type:text/plain;charset=utf-8" 不影响邮件主题解析。
后查到要在标题中正常显示也是需要指定主题部分编码,形式是
 =?<编码名称>?<B/Q>?<主题内容的B/Q编码>?=
  其中编码名称可以是utf-8或者gb2312等等
     B/Q 分别代表base64或quoted_printable 编码
在Debian下有base64转码命令工具 base64,它的使用很简单
   

》base64 [OPTION][FILE]

OPTION主要有
           -d 表示解码
           -i 和-d配合使用,表示忽略非字符
      而不加参数就是对文件编码。
所以最后的命令成了

》mail -a "Content-Type:text/plain;charset=utf-8"-s "=?utf-8?B?`echo <主题> | base64`?="<xxx@emailhost><<emailtextfile>

注意命令中的反引号,根据bash命令行特性,还可以改为

》mail -a "Content-Type:text/plain;charset=utf-8"-s "=?utf-8?B?$(echo <主题> | base64)?="<xxx@emailhost><<emailtextfile>