• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了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 的乱码

不要把任何除了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.', 您的邮件已发送。';  ?>

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



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2022-04-29纯CSS实现心形加载动画(附源码)
  • 2022-04-29详解如何提升WordPress打开前后台的速度
  • 2022-04-29织梦DedeCMS站点高级安全策略(Linux篇)
  • 2022-04-29node_modules中如何优雅的修改依赖库?方法介绍
  • 2022-04-29Photoshop制作针织毛绒文字效果
  • 2022-04-29phpcms文章如何筛选分类?
  • 2022-04-29PHP怎么将图片转成base64
  • 2022-04-29PhotoShop用滤镜制作一朵抽象的花朵特效教程
  • 2022-04-29浅谈Bootstrap中的自适应屏幕
  • 2022-04-29TP6+vue-element-admin实现后台登录验证码

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 如何升级或修改nodejs的版本
    • Thinkphp自带分页类样式转Bootstrap分页样式
    • curl获取结果乱码的解决方法
    • Phootoshop制作金属质感的字体教程
    • PHP+jQuery+MySql实现红蓝投票功能
    • Vue模仿ElementUI的form表单实例代码
    • 聊聊Nodejs获取参数的四种方法
    • WordPress文章列表 添加文章内图片数量展示!
    • 一分钟学会PHP中关于封装验证码(上)
    • CDR绘制活力城市/海报

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有