php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法:1、将subject里头的文字符合RFC 2047的规范;2、在headers中添加【content-type】;3、对用来发送邮件的主机进行正确配置。

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

1.使用 PEAR 的 Mail 类

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?

标题字符串后加:?=

例如:<?php

$to = "clairelume@qq.com"; //将此电子邮件地址改为自己的。

$name = $_POST['name'];

$email = $_POST['email'];

$subject = "来自博客读者的邮件";

$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

$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 = $_POST['message'];

mail($to,$subject,$message,"From: ".$email."",$headers);

echo 'OK '.$name.', 您的邮件已发送。';

?>

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

php发送邮件,标题是乱码,php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?...相关推荐

  1. php调试代码时var_dump( )打印中文字符时出现乱码解决方案

    php调试代码时var_dump( )打印中文字符时出现乱码解决方案 参考文章: (1)php调试代码时var_dump( )打印中文字符时出现乱码解决方案 (2)https://www.cnblog ...

  2. datax 导入数据中文乱码_四种方法处理MYSQL导入中文数据时的乱码问题 | 很文博客...

    我是用的最后一种方法,前面三种解决MYSQL导入数据乱码的方法没试过,很文博客推荐大家直接使用第四种方法处理MYSQL导入中文数据时的乱码问题. 首先在新建数据库时一定要注意生成原数据库相同的编码形式 ...

  3. php title 乱码,PHP发送UTF-8编码中文邮件标题乱码的解决

    当我们使用下面的PHP语句发送中文电子邮件的时候,会发现邮件的标题是乱码,而邮件正文却是正确的,如何才能使得邮件标题不是乱码呢? $subject = stripslashes($the_post[' ...

  4. c mysql 中文字符_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  5. ftl转PDF服务器上中文不显示,解决Linux中swftools转换中文pdf时出现乱码问题

    前段时间安装了swftools可以将pdf转换为swf文件,然后配合一个FlexPaper,就可以做成和百度图文库类似的东东了. 但是今天,我们开发的同事告诉我说pwd转换的这个会有乱码问题,我看了一 ...

  6. c# mysql 汉字乱码_在C#和MySQL中存取中文字符时避免乱码的方法

    当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱码. 由于中文字符采用双字节表示,所以对含有中文的字符串的处 ...

  7. linux加载u盘乱码怎么转换,Linux系统下加载U盘设备时文件乱码的有效解决方法

    很少情况会在Linux系统下使用U盘,但是最近有朋友在Linux系统下加载U盘设备的时候发现U盘内的文件出现了乱码现象,这该怎么办呢?很多朋友对Linux系统又不太熟悉,不知道该怎么操作,没关系,让小 ...

  8. 解决SendMessage函数向QQ好友发送中文消息时出现乱码

    今天在回顾以前写的自动向qq好友发送消息的代码,发现设置好的中文消息发送后却成了乱码: 代码如图:  运行如图: 我百思不得其解 但想到之前是可以成功运行的,我便开始回忆我这期间是否改变某些项目设置 ...

  9. php 邮件乱码,解决PHP mail发送UTF-8中文邮件乱码

    在这里,我将解决一个问题,也许很多人遇到过,困惑又不知道如何去做的问题. 如何发送中文邮件时没有乱码? 在这里我将告诉你如何发送UTF-8编码格式的中文电子邮件.本文不涉及GBK编码或者GB2312编 ...

最新文章

  1. 如何高效推进ML模型开发和部署?Uber机器学习平台Michelangelo实践
  2. Redis 日志篇:无畏宕机快速恢复的杀手锏
  3. Docker将镜像上传至私有仓库
  4. uwsgi+nginx部署django项目(有图原理的详细展示的)
  5. python7.1处理异常
  6. 网络编程—网络基础概览、socket,TCP/UDP协议
  7. 《操作系统真象还原》-阅读笔记(上)
  8. node服务器中打开html文件的两种方法
  9. mysql数据库存储多语言_数据库---数据控制语言(DCL)
  10. 新手如何检查MacBook电池的运行状况
  11. 利用Quartus-II进行仿真实验
  12. 第十二课,assimp模型加载(数据加载篇)
  13. SQL查询结果根据汉字拼音排序
  14. PVE系列教程(十五)、安装Windows10系统(专业版、企业版、家庭版通用)
  15. h5物体拖动_iH5高级教程:H5交互进阶,拖动物品效果
  16. 商业银行合规管理用OA:“上报、评估、整改、分析”全面数字化
  17. c语言error语句错误,【资料】C语言错误信息中文解释
  18. Quartz框架介绍
  19. git问题:head detached at xxxx
  20. 极验验证的滑动验证码破解

热门文章

  1. python 坐标轴刻度_给妹子讲python-S02E08坐标轴与主次刻度
  2. 2020-10-13 多智能体基本图论
  3. EducationalCodeforcesRound62(Div. 2)(A-D题解)
  4. HDU 2833 WuKong
  5. Webshell免杀绕过waf
  6. Mysql查看状态,连接数,线程数以及Mysql性能监控工具doDBA的使用以及优化
  7. Nginx Mac笔记
  8. python框架之Django(2)-简单的CRUD
  9. 如何打开.etl文件?
  10. 64位操作系统下IIS报“试图加载格式不正确的程序”错误