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>