php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?

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

php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?

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

1.使用 PEAR 的 Mail 类

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

2.关于headers 中subject 的乱码

立即学习“PHP免费学习笔记(深入)”;

不要把任何除了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"; $headers .= "Content-type: text/plain; charset=utf-8"; $headers .= "Content-Transfer-Encoding: 8bit"; $message = stripslashes(strip_tags($the_post['Content'])); mail($to, $subject, $message, $headers);

登录后复制

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

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

标题字符串后加:?=

例如:


登录后复制

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

相关学习推荐:PHP编程从入门到精通

以上就是php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2131945.html

(0)
上一篇 2025年2月24日 23:06:25
下一篇 2025年2月23日 18:29:24

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 星外php自动安装是指什么

    星外php自动安装是指星外php全自动安装程序,是一款非常使用的PHP运行换将配置包,适用于32位的windows操作系统system,能够快速编写php程序,并有效生成页面,使操作不复杂,且流畅。  推荐:《PHP教程》 星外php自动配…

    2025年2月24日
    200
  • php如何删除指定目录文件

    php删除指定目录文件的方法:首先使用header方法设置文件执行的编码为utf8;然后创建两个变量;接着使用“file_exists”方法判断目录是否存在;最后使用unlink方法删除该路径所指定的文件即可。 推荐:《PHP教程》 新建一…

    2025年2月24日 编程技术
    200
  • php中global的用法是什么?

    php中global的用法是:1、如果是用global进行声明,则可以调用函数外的变量;2、引入函数外部的【$mk】变量,global在此处就有全局化变量的意思。 php中global的用法是:   java中要引入一个变量,可以通过参数的…

    2025年2月24日
    200
  • php get用法是什么

    php get指的是“$_GET”变量,是一个数组,其内容是由HTTP GET方法发送的变量名称和值,作用是收集来自“method=”get””的表单中的值,其语法如“method=”get””。 推荐:《PHP教程…

    2025年2月24日
    200
  • 如何解决php mail收不到的问题

    php mail收不到的解决办法:首先使用命令“sudo apt-get install mailutils”安装mailutils;然后打开sendmail的配置宏文件;接着修改内容为“Addr=0.0.0.0”;最后测试配置即可。 推荐…

    2025年2月24日
    200
  • php如何清除标签

    在php中可以使用内置的“strip_tags”函数来清除标签,该函数始终会剥离HTML注释,其语法是“strip_tags(string,allow)”,参数“string”表示要检查的字符串。 推荐:《PHP教程》 strip_tags…

    2025年2月24日
    200
  • php手机号码中间四位如何隐藏?

    php手机号码中间四位隐藏的方法:使用【substr_replace】代替方法,替换字符串的子串,代码为【$num = “12345678910” $str = substr_replace($num,’…

    2025年2月24日
    200
  • php中const define区别有哪些

    php中const define区别有:1、const用于类成员变量的定义,而Define不可以用于类成员变量的定义;2、Const可在类中使用,而define不能;3、Const不能在条件语句中定义常量;4、const采用普通的常量名称。…

    2025年2月24日
    200
  • php系统不支持mysql数据库怎么办

    php系统不支持mysql数据库的解决办法:首先打开“php.ini”文件;然后修改内容为“extension_dir = “X:PHPext””;接着修改“disable_functions =passthru,e…

    2025年2月24日
    200
  • php ts和nts区别是什么

    php ts和nts的区别有:1、ts即线程安全,多线程访问时,采用了加锁机制,而nts即非线程安全,就是不提供数据访问保护;2、php以ISAPI方式加载的时候选择ts版本,而以fast cgi方式运行的时候选择nts版本。 推荐:《PH…

    2025年2月24日
    200

发表回复

登录后才能评论