因为需要从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>