2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法【PHP】

php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法【PHP】

时间:2019-01-09 10:45:44

相关推荐

php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法【PHP】

后端开发|php教程

php,utf8乱码,php,utf8中文乱码,utf8编码中文乱码,php标题乱码

后端开发-php教程

最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。

限时限量抢购源码,vscode替换在那里,水星网卡ubuntu,如何禁止自带tomcat,论坛爬虫源码,php 随机数 小数点,潜江seo网络推广怎么做,网站源码和模板带有数据库,网页模板 html中文lzw

点卡充值系统源码,vscode排行,ubuntu开启无线网卡,tomcat功能模块出现问题,sqlite 存 变量,大气的企业网页设计布局,ipad如何创建网页连接服务器,网页图片插件下载,前端框架整合开发,百度站内爬虫,php开源考试系统,seo谈判,asp 手机网站,erp 网页源码下载,钢铁模板, 页面加载等待,hr人事管理系统源码,图片网站程序lzw

1.使用 PEAR 的 Mail 类

qq登录页面源码,vscode每运行一个新代码,ubuntu 重启网关,tomcat按用户分配线程,apache 爬虫框架,php168系统下载,荔湾区seo优化哪家专业lzw

PEAR 的 Mail 类可以让你选择使用 sendmail 或者 SMTP 方式发信,这样的包装好的接口很好用,你没有必要去自己重新发明轮子。

2.关于headers 中subject 的乱码

不要把任何除了 iso-8859-1 编码之外的文字直接放进subject,正确的方式是让subject 里头的文字符合RFC 2047 的规范,假设你的subject 处的文字的编码是GB2312,那么正确的subject 应该是这样的格式

$headers[‘subject’] = ‘=?GB2312?B?’ . base64_encode(‘标题文字’) . ‘?=’;

如果是UTF-8 的话,把上面开头的GB2312 替换成UTF-8 即可。推荐在标题处使用GB2312 编码,因为MTA 的分化实在是严重,大部分的MSP使用的都是自己开发的 MTA,而相信国内的大部分 MTA 无论如何都是可以支持 GB2312 编码的。

而如果是发送到国外的MSP,则推荐你在subject 处使用经过base64 编码的 UTF-8 文字,因为他们很可能不支持 GB2312 编码。

3.一定在headers 中添加content-type

电子邮件的 headers 中的 content-type 处类似网页的,也是 text/plain; charset=gb2312 这样的格式。这个选项主要对收邮件的客户端有意义,可以避免在客户端出现乱码,部分的 Webmail 也会根据这里的设置对邮件的内容进行编码转换以正确显示。你可以设想一下你用 gb2312 编码发到 .com.tw 的邮箱时候的情况。

4.对你用来发送邮件的主机进行正确配置

1)一定配置反向解析,因为大部分的非固定 IP 都无法做反向解析,部分反垃圾邮件策略以此作为判断依据。

2)一定配置 MX 解析,道理同上。

3)确保你的 return path 是能够收到退信的,否则你的邮件发送服务器可能会进入接收端的黑名单。

$subject = stripslashes($the_post[Title]); $headers= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset=utf-8\r\n"; $headers .= "Content-Transfer-Encoding: 8bit\r\n"; $message = stripslashes(strip_tags($the_post[Content])); mail($to, $subject, $message, $headers);

先用函数base64_encode() — 使用MIME base64 对数据进行编码

标题字符串前加编码类型例如: =?UTF-8?B?

标题字符串后加:?=

例如:

这样,发送的中文邮件标题就不是乱码了。

是不是很简单,其实把问题分析透了,所有的问题都会迎刃而解了,希望这篇文章对大家的学习有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。