使用 perl 发送中文邮件标题乱码

代码如下面,解决乱码的方法是使用 base64 编码。

use MIME::Base64::Perl;
 
open(MAIL, '|/usr/sbin/sendmail -t');
 
my $recver = 'wangdong@abc.com';
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 改一下就好了。

Related posts:

  1. perl and fork
  2. 使用 perl 来登录网页
  3. 命令行发送有附件的邮件
  4. smsd 发送中文短信乱码

2 Trackbacks

  1. By wd and cc » 使用 perl 发带附件的邮件 on 七月 5, 2010 at 6:33 下午

    [...] 上篇 使用 perl [...]

  2. By wd and cc » 无聊又写一个用来发邮件的 pm.. on 七月 9, 2010 at 4:23 下午

    [...] perl 发中文标题邮件,和中文附件邮件后,又把他们整合了一下写了一个 pm [...]

Post a Comment

Your email is never shared.