万伯智业千人计划 HRCOE训战营 QQ、微信、工单售后保障

HR线下专题学习,就选万伯智业
专题VIP年度7折钜惠,一次购买,三年免费复训

定位专业技术支持,聚焦薪酬、绩效、组织发展(TD/OD/LD)、胜任力建模、人才测评、领导力开发、人才评价中心等细分领域,
输出深度专业能力和实战解决方案

距结束还剩:0000小时0000
当前位置:首页 » WordPress主题开发 » WordPress使用教程 » 正文

PHP邮件mail()函数解析和SMTP使用方法及乱码问题

email.class.php
登录后免费下载

前段时间由于一个需求需要使用评论自动发送邮件到网站官方邮箱的功能,期间碰到不少问题特别是乱码问题,经过一番纠结后终于完美解决了。

一、使用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类被我修改过,增加了编码设置,没加编码设置的话会在某些不能自动识别编码的客户端上出现乱码。

关于这个类的使用:

<?php
require_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里是这样处理的,这样有效的解决了乱码问题。

优点:可靠性强,稳定
缺点:代码较多,邮箱的账号密码必须使用明文存于本站中,不安全因素增加,需要在自己的邮箱配置开启smtp服务

下面附上 email.class.php

产品咨询

-=||=-收藏赞 (152)

HR精品专题

款款是精品、沉浸式脱产学习、售后有保障,一次报名、三年免费复训,由万伯智业团队倾力打造

宽带薪酬专题

适用于中大型规模企业等

¥ 2985  3980

薪酬沙盘专题

适用于成长型企业

¥ 2985  3980

战略绩效专题

适用于各类型企业

¥ 2985  3980

绩效经理专题

适用于各类型企业

¥ 2985  3980

劳动法专题

适用于各类型企业

¥ 2985  3980

人才盘点专题

适用于各类型企业

¥ 1485  1980



万伯智业 | 让组织管理更至简-与企业共致远 » PHP邮件mail()函数解析和SMTP使用方法及乱码问题
分享到
1
152

评论 (0)

email.class.php
登录后免费下载
登录
立即登录

还没有账号? 立即注册

  签 到
请登录后签到
每日签到得5积分,每连续签到7日将额外得20积分

积分排行榜
1.4zzz33ox102493 积分
2.68031kj374jn1nxv56239 积分
3.6y931g3rn93mjmoz56131 积分
4.vr8ryxw5ejn52pe644221 积分
5.chriswin40059 积分
6.4zzv1e8540029 积分

HR个人专题学习卡

EVIP体验版
2086
原价 2980限时7折团报优惠价
《购买须知》11门
《HRM落地实战专题》中
任选(1)门3年内免费复训

购买其他自营专题享5折
购买其他代理的课程享8折
BVIP初阶版
3486
原价 4980限时7折团报优惠价
《购买须知》11门
《HRM落地实战专题》中
任选(2)门3年内免费复训

购买其他自营专题享5折
购买其他代理的课程享8折
MVIP中阶版
4886
原价 6980限时7折团报优惠价
《购买须知》11门
《HRM落地实战专题》中
任选(3)门3年内免费复训

购买其他自营专题享5折
购买其他代理的课程享8折
SVIP高阶版
8960
原价 12800限时7折团报优惠价
《购买须知》11门
《HRM落地实战专题》中
任选(6)门3年内免费复训

购买其他自营专题享5折
购买其他代理的课程享8折
DVIP钻石版
13860
原价 19800限时7折团报优惠价
《购买须知》11门
《HRM落地实战专题》中
任选(多)门3年内免费复训

购买其他自营专题享5折
购买其他代理的课程享8折

微信社群

深圳

HR学习交流群

加入
交流群二维码
                       

加客服微信617680202拉你入群

(请务必备注“地区+姓名+职务”)

广州

HR学习交流群

加入
交流群二维码
                       

加客服微信617680202拉你入群

(请务必备注“地区+姓名+职务”)

东莞

HR学习交流群

加入
交流群二维码
                       

加客服微信617680202拉你入群

(请务必备注“地区+姓名+职务”)

QQ群

大中华HR精英俱乐部3群
个人中心
用户中心
会员创作、推广中心
公开课
线下公开课
全国公开课采购分销中心
线上课
万伯智业线上课程
个人/企业线上学习平台
contact-img
推广返佣
推广返佣
积分越多 返现比例越高
内训问卷
内训调查表
订制内训解决方案
法律顾问
刘康健
民商法、劳动法、法律顾问