PHPMailer中文乱码问题的解决方法

以前用PHPMailer帮人家开发了用于发邮件的网站,因为是英文客户,因此中文没怎么测试,最近反馈说 中文乱码!php

其实,以前是有发现标题中会出现中文了乱码,已经经过相应的代码解决。html

收到反馈以后,查看了html内容编码设置是utf-8应该没有问题,我又使用本身开发的系统发了一个邮件,中文显示正常。到这里我感受是他们反馈的问题不对,是否是什么特例?学习

 

我正想着,无心中手机收到邮件通知,打开一看,中文所有乱码了。我滴妈呀,原来是网页所有显示正常,手机客户端显示乱码,从何下手呢??个人代码文件和邮件的html内容都是utf-8编码的。测试

---------------------------------最后发现问题以下-----------------------------------------网站

 

PHPMailer.class.php 类里面的默认编码是iso-8859-1.这应该是一个欧洲的编码,因此问题在这里,把默认编码改为utf-8, 而后代码里设置一下google

$mail = new PHPMailer();
$mail->Charset='UTF-8′;编码

 

-----------------------------------------phpmailer 乱码总结-----------------------------------------------------------------------.net

1:打开phpmailer 核心文件 class.phpmailer.php , 将 public $CharSet = ‘iso-8859-1′; 改成 public $CharSet = ‘UTF-8′;设计

至于为何要将'iso-8859-1′改成‘UTF-8',请google或百度一下'iso-8859-1′就清楚。code

 

2:设置邮件的编码;

$mail = new PHPMailer();

$mail->Charset='UTF-8′;

相信有很多朋友是设置成”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() )

相关文章
相关标签/搜索