PHP邮件mail()函数解析和SMTP使用方法及乱码问题
来源:互联网 发布:知行供应链 编辑:程序博客网 时间:2024/05/22 06:56
一、使用PHP内置的mail 函数
语法: mail(to,subject,message,headers,parameters)
- to 规定邮件的接收者
- subject 规定邮件的主题。该参数不能包含任何换行字符
- message 规定要发送的消息
- headers 规定额外的报头,比如 From, Cc 以及 Bcc
- parameters 规定 sendmail 程序的额外参数。
碰到的主要问题是乱码问题,刚开始是某些客户端接收邮件时好(比如QQ邮箱,估计带自动那个识别编码)的有些不foxmail、ipad显示乱码,解决方式正确的设置这个mail的headers就行了,下面是我使用的完美的无乱码的例子。
<?php// 当发送 HTML 电子邮件时,请始终设置 content-type$headers = "MIME-Version: 1.0" . "\r\n";$headers .= "Content-type:text/html; charset=utf-8";mail($to,$subject,$message,$headers);?>
优点:使用方便就一个简单的函数
缺点:需要php.ini支持该函数,如果某些服务器不支持而又不能改环境那就不行了而且总是不稳定,发的有时能收到有时不能。
二、使用SMTP发送邮件
这里使用一个已经封装好的smtp类email.class.php类被我修改过,增加了编码设置,没加编码设置的话会在某些不能自动识别编码的客户端上出现乱码。
关于这个类的使用:
<?phprequire_once ('email.class.php');$smtpserver = "smtp.exmail.qq.com";$smtpserverport =25;$smtpusermail = "lyushine@qq.com";$smtpuser = "lyushine@qq.com";$smtppass = "xxxxxx";$mailtype = "HTML";$smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);$smtp->debug = false;$smtp->sendmail($to, $smtpusermail, $subject,$message, $mailtype,"utf-8");?>
看以上代码大概了解了吧。先引入email.class.php然后实例化smtp类,配置debug模式,发送邮件,需要注意的是设置最后的编码。
刚开始我网上找的没有对编码进行处理导致乱码。
关于 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 编码的。
在这里我把对subject的处理在了类里面,而外面只要传参设置编码为utf-8或者GB2312就行了。在email.class.php里是这样处理的,这样有效的解决了乱码问题。
- PHP邮件mail()函数解析和SMTP使用方法及乱码问题
- PHP使用mail函数发送邮件标题乱码问题
- php mail函数发邮件,出现乱码和感叹号
- 关于PHP mail函数无法正常解析HTML邮件问题
- 关于php的mail函数和一个smtp发送邮件类
- php-mail()函数发送UTF-8邮件-中文标题乱码
- PHP的mail()函数发送邮件,其中的html标签未被正常解析的问题
- php脚本中利用mail函数发送邮件及问题归纳
- Java Mail邮件乱码问题
- 使用mail函数发送邮件标题乱码问题
- 使用mail函数发送邮件标题乱码问题
- 用hMailServer为PHP的mail()函数配置搭建windows平台的SMTP邮件服务器
- 用hMailServer为PHP的mail()函数配置搭建windows平台的SMTP邮件服务器
- php mail函数发送html邮件不解析,linux+postfix
- [php]mail函数发送邮件
- PHP---mail函数使用的使用方法,及相关配置
- wamp下使用php的mail()函数发送邮件问题
- php smtp phpmailer发送邮件乱码
- spring事务管理使用总结 (重点)
- mysql中where,limit于order by 的使用陷阱
- 如何实现更真实的软阴影效果
- spring中ContextLoaderListener和DispatcherServlet区别
- eclipse maven插件方式启动项目
- PHP邮件mail()函数解析和SMTP使用方法及乱码问题
- Eclipse工具Debug详解
- python---学习笔记之序列化反序列化以及pickle模块
- View事件体系学习(一)滑动
- CodeForces 888D Almost Identity Permutations
- 【亲测】centos 7下编译并安装warp-ctc
- 数据结构与算法python版(二)--双向链表
- 【Scikit-Learn 中文文档】内核岭回归
- 配置apache cxf 客户端支持https