代码如下面,解决乱码的方法是使用 base64 编码。
这里面 encode_base64 可以把文本做 base64 编码,要注意的是这个方法的第二个参数,是用来把编码结果进行格式化的,会每 76 个字符插入一个这个参数,默认是换行。
如果不是 utf8 的文本,那把里面的 utf8 改一下就好了。
use MIME::Base64::Perl; open(MAIL, '|/usr/sbin/sendmail -t'); my $recver = '[email protected]'; my $alertTitle = "中文 asdfsdf sdfsdf sdf sdf s df sd fsd f sd fsd f sdf sdf sdf"; my $alertText = "body "; my $encoded = encode_base64($alertTitle, ""); print MAIL "From: alert\@abc.com\r\n"; print MAIL "To: $recver\r\n"; print MAIL "Subject: =?UTF-8?B?" . $encoded . "?=\r\n"; print MAIL "MIME-Version: 1.0\r\n"; print MAIL "Content-type: text/plain; charset=utf-8\r\n"; print MAIL "\n"; print MAIL "$alertText"; close(MAIL);
这里面 encode_base64 可以把文本做 base64 编码,要注意的是这个方法的第二个参数,是用来把编码结果进行格式化的,会每 76 个字符插入一个这个参数,默认是换行。
如果不是 utf8 的文本,那把里面的 utf8 改一下就好了。