php mail发邮件标题中文乱码的问题解决办法

当使用下面的PHP语句发送电子邮件的时候,如果编码和接收邮箱编码不相同,会发现邮件的标题是乱码,而邮件正文却是正确的,如何才能使得邮件标题不是乱码呢?

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

  先用函数base64_encode() — 使用 MIME base64 对数据进行编码
  标题字符串前加编码类型例如: =?UTF-8?B?
  标题字符串后加:?=

  例如:

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

  将上面一句添加到代码之中,这样,发送的中文邮件标题就不是乱码了。

 代码如下 复制代码

<?php
$to      = 'junhuibai@gmail.com';
$subject = iconv('','GB2312','亲爱的'.$s_user.',请取回您的密码!');
$subject = "=?GB2312?B?".base64_encode($subject)."?=";
$message = $s_user.',您好!'.
                '您的新密码是:'.$pwd.''.
                '为了保证您用户的安全性,请登录更改您的密码。'.
                '此信是由系统发出,系统不接收回信,请勿直接回复!';

$headers = 'From: junhuibai@tom.com' . "rn" .
    'Reply-To:junhuibai@tom.com' . "rn" .
    'X-Mailer: PHP/' . phpversion();

if(mail($to, $subject, $message,$headers))
echo'ok';
else
echo 'no';
phpinfo();
?>

最终解决办法

 代码如下 复制代码

标题乱码:     

   $subject = "=?UTF-8?B?".base64_encode('邮箱验证 —— ' . SITE_NAME)."?=";

正文乱码:

设置header : charset=utf-8'

$headers = 'From: webmaster@webinno.cn' . "rn" .
        'Content-type: text/html; charset=utf-8' . "rn" .
        // 'Reply-To: webmaster@example.com' . "rn" .
        'X-Mailer: PHP/' . phpversion();

时间: 2025-01-29 19:27:40

php mail发邮件标题中文乱码的问题解决办法的相关文章

Android Studio控制台出现中文乱码(方框)问题解决办法

Android Studio控制台出现中文乱码(方框)问题解决办法 最近遇到个恶心的事儿,就使用死丢丢的时候,发现怎么我的控制台输出中文都显示方框???别人都没事,恶心坏我了.经过各种百度,终于找到解决办法,办法也是够恶心的.我们一起来看看吧. 乱码显示结果如下: 解决办法很简单,设置字体为YaHei即可.(可能之前下载的苹果编程字体不支持吧) 修改后结果可以正常显示了 再次简单做个记录, 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP substr 截取中文乱码的问题解决办法

文章页面的 description 是使用 substr 函数来截取220字符的,但是最后一个汉字总是乱码,而且截取出来的长度也不正确. 通过神奇的 Google 找到方法,可能是因为 substr(string,start,length),会将汉字以字符的形式截断,而造成乱码 解决方案: 使用 PHP 扩展库中的 mb_substr 方法. 注意 1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Wind

centos 7在SecureCRT中文乱码的问题解决办法

解决Centos7中使用CRT链接的时候中文字符乱码的问题: [root@hz /]# export LC_ALL=en_US.UTF-8 思路: [root@hz /]# locale    #默认当前语言环境 LANG=en_US.UTF-8 LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGE

php网页标题中文乱码的有效解决方法

 测试了php的网页发现标题中文乱码,在网上搜索了下面的解决方法,需要的朋友可以参考下 刚刚测试了一个php的网页,结果发现标题中文乱码,于是乎,搜搜得到了一个比较不错的答案    在<title>标签前面添加以下一句话就解决了  代码如下: <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>     

javaxmail-有一个关于javax.mail 发邮件 使用 代理服务器的问题 代理服务器需要密码

问题描述 有一个关于javax.mail 发邮件 使用 代理服务器的问题 代理服务器需要密码 这两天想做一个集中监控 发现服务器性能下降 或数据库的表空间不够时 就给自己的邮箱发邮件提醒的功能 可是公司用的内网,接外网要用公司的代理服务器 props.setProperty("proxySet", "true"); props.setProperty("socksProxyHost", "10.10.101.9"); prop

mysql-C# Mysql datagridview控件 列标题中文乱码问题

问题描述 C# Mysql datagridview控件 列标题中文乱码问题 用C#从Mysql中读取数据到datagridview控件中,结果列标题中文乱码,内容没事.代码如下: string commstr = "SELECT Patient_ID as ID,NAME as 姓名,TARGET as 患侧,DIAGNOSIS as 诊断 FROM PatientInfo"; this.data_case.DataSource = DBOperate.DBOperate.selec

php网页标题中文乱码的有效解决方法_php技巧

刚刚测试了一个php的网页,结果发现标题中文乱码,于是乎,搜搜得到了一个比较不错的答案 在<title>标签前面添加以下一句话就解决了 复制代码 代码如下: <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>

C#中WebClient使用DownloadString中文乱码的解决办法

原文:C#中WebClient中文乱码的解决办法 第一次尝试:  string question = textBox1.Text.ToString(); WebClient client= new WebClient(); client.Encoding = System.Text.Encoding.GetEncoding("GB2312"); Uri uri = new Uri("http://xxxxxxxxxxxxxx"); textBox1.Text =cl

PHP读取mssql json数据中文乱码的解决办法_php实例

PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文