PHPMailer可以让PHP新手在简单的配置下以复杂的socket方式发送邮件,所以应用还是相当广泛的。
不过,有个烦人的地方,老外写的代码,可能没有顾及到国人,所以发送中文邮件时会乱码。
以下便是解决phpmailer发件中文乱码问题的一些总结了。
1:打开phpmailer 核心文件 class.phpmailer.php , 将 public $CharSet = 'iso-8859-1'; 改为 public $CharSet = 'UTF-8';
至于为什么要将'iso-8859-1'改为‘UTF-8’,请google或百度一下'iso-8859-1'就清楚。
2:设置邮件的编码;
相信有不少朋友是设置成"GBK"或“GB2312”的,我开始也是,后来了解到Mail是国际化的,如果想在像Gmail等那样的国际化邮箱正确显示中文,请将编码设置为“UTF-8”;
3,:设置标题编码;
这里可能有人会问,都设置了邮件的编码了,还设置标题编码做什么。
如果您测试过多种邮箱,你会发现标题中文是乱码的,没错,即使您设置了 $mail->Charset="UTF-8";
既然学习php应该多看看php手册或留意php.net ,标题乱码的解决办法我是在php官网找到答案的 hhtp://.www.php.net/mail。
$mail->Subject ="信件标题"; 改为 $mail->Subject = "=?utf-8?B?" . base64_encode("信件标题") . "?=";
“设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。”(来自php手册 base64_encode() )
这样,标题的中文乱码也就解决了。
#---------------------
附,phpmailer发送邮件中文乱码的问题
phpmailer在默认情况下发出去的邮件可能会出现乱码。
网上给出解决方案:增加一行
经过测试,此方法对于163可用,可是QQ邮箱就会变成乱码,而QQ邮箱在默认的情况下是没有问题的。
正确的做法:
中文还是用GB2312的好点。
只测试过QQ,163其它的没有测试。
2012-11-5更新:
$mail->CharSet这个方法应该设置的编码是要跟你引用phpmailer类的页面的编码一至的,比方在1.php里面引用该类发送邮件,则需要设置为1.php这个文件的编码类型,如何查看文件的编码,这个问题就不要问了。当然,外部引用的内容最好也要统一文件编码。
就是这些了,希望以上的内容可以帮助大家解决phpmailer中文邮件发送乱码的问题。
脚本学堂,祝大家学习愉快。
您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子