PHP发送邮件标题乱码的解决

发布时间:2025-11-13 点击:2
当使用下面的php语句发送电子邮件的时候,如果编码和接收邮箱编码不相同,会发现邮件的标题是乱码,而邮件正文却是正确的,如何才能使得邮件标题不是乱码呢?
$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?
标题字符串后加:?=
例如:
$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' . \r\n .
'reply-to:junhuibai@tom.com' . \r\n .
'x-mailer: php/' . phpversion();
if(mail($to, $subject, $message,$headers))
echo'ok';
else
echo 'no';
phpinfo();
?>
参考如下:
很多朋友都使用过javamail进行邮件发送,在邮件正文中的乱码容易解决。但邮件主题的乱码无论怎样转码总是显示一堆乱码。到底应该怎么处理呢?
javamail中的邮件主题需要进行base64编码,格式形如:
=?gb2312?b?xpq1xmpcwuvs0b6t1tjww6osx+u+ob/stcfcvkossqlq3rjew9zc66oh?=
所以,直接使用msg.setsubject(中文主题),或者msg.setsubject(中文主题.getbytes(8859_1), gb2312))都一样会出现乱码。在设置邮件主题前需要将主题字串的字节编码为base64格式,并添加编码头,示例代码如下:
sun.misc.base64encoder enc = new sun.misc.base64encoder(); msg.setsubject(=?gb2312?b?+enc.encode(subject.getbytes())+?=);


怎么查看租用的香港服务器线路?
原创文章中如何添加SEO优化行为
网站SEO站内优化技巧大全
常用的网站管理工具有哪些?
美国站群服务器多ip好不好?
律师类网站建设改版如果影响网站排名怎么办?
上海网站建设公司浅谈搜索引擎优化攻略2.0
纯干货!挑选虚拟主机的实用方法