PHPMailer中文乱码问题的解决方法
之前用PHPMailer帮人家开发了用于发邮件的网站,由于是英文客户,所以中文没怎么测试,最近反馈说 中文乱码!
其实,之前是有发现标题中会出现中文了乱码,已经通过相应的代码解决。
收到反馈之后,查看了html内容编码设置是utf-8应该没有问题,我又使用自己开发的系统发了一个邮件,中文显示正常。到这里我感觉是他们反馈的问题不对,是不是什么特例?
我正想着,无意中手机收到邮件通知,打开一看,中文全部乱码了。我滴妈呀,原来是网页全部显示正常,手机客户端显示乱码,从何下手呢??我的代码文件和邮件的html内容都是utf-8编码的。
---------------------------------最后发现问题如下-----------------------------------------
PHPMailer.class.php 类里面的默认编码是iso-8859-1.这应该是一个欧洲的编码,所以问题在这里,把默认编码改成utf-8, 然后代码里设置一下
$mail = new PHPMailer();
$mail->Charset='UTF-8′;
-----------------------------------------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:设置邮件的编码;
$mail = new PHPMailer();
相信有不少朋友是设置成”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() )
最新文章
- 。。。欢乐捕鱼App WeX5 连接打包代理服务失败,请检查代理服务地址是否正确。。。
- JavaScript学习12 JS中定义对象的几种方式
- 防止SVN冲突,Elipse资源同步介绍
- Win10如何开启IIS服务以及如何打开IIS管理器
- ACE的CDR中的字节对齐问题
- logstash5.x改变
- 图 - 从零开始实现by C++
- 题目1434:今年暑假不AC (项目安排类:结束时间快排,判断开始时间)
- 在 ASP.NET MVC 中创建自定义 HtmlHelper
- sql server Case when 的用法
- .NET的DTO映射工具AutoMapper
- HTML标签类型及特点
- Centos 安装boost库
- Angular 4 设置组件样式的几种方式
- JVM学习记录-垃圾回收算法
- ASP.NET实现头像剪切保存
- Swift 里 Array (一)内存结构
- As3截图转换为ByteArray传送给后台node的一种方法
- SELinux 关闭方法
- Serv-U FTP服务器安装及使用图解教程
热门文章
- hashlib 实现加密
- [题解](约数)BZOJ_1053_反素数
- [题解](背包)luogu_P4095 eden的新背包问题
- python入门之实例-商品选择
- 【排序】插入排序:最稳定:时间复杂度O(n^2)
- Linux的安装与配置
- codeforces 121 E. Lucky Array
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- 纪念一下我的第一个php扩展
- 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息