前段时间写了一篇博客:thinkphp集成系列之短信验证码、订单通知

说了这是一个短信通知泛滥的年代;大部分网站的邮箱注册都已经被短信注册所取代;

但是邮件和短信相比在一些场景依然有着重要的意义和优势;

1:零成本;发邮件没有费用;

2:内容丰富且量大;邮件可以长篇大论;图文并茂;

3:增加访问量;用户很容易通过邮件中的链接访问网站;

好了;下面来来为thinkphp集成邮件系统;

示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

一:引入phpmail

从示例项目中复制两个文件到自己的项目;

/ThinkPHP/Library/Org/Nx/class.phpmailer.php ;
/ThinkPHP/Library/Org/Nx/class.smtp.php ;

不要从官网上下载;因为下载的phpmail直接引入thinkphp是有一些坑会报错的;

具体报什么错;年代久远;当年整合的时候没有记录;

二:设置配置项

/Application/Common/Conf/config.php

'EMAIL_FROM_NAME'=>'',//发件人'EMAIL_SMTP'=>'',//SMTP服务器'EMAIL_USERNAME'=>'',//账号'EMAIL_PASSWORD'=>'',//密码

如果使用163邮箱;此处有一个坑;首先是要开启smtp;

开启过程中是要设置一个授权密码;开启完成;又一个坑也就同步挖好了;

配置项中的EMAIL_PASSWORD 指的不是163邮箱的登录密码;而是授权密码;

否则SMTP connect() failed;

三:发送邮件

/***发送邮件*@paramstring$address需要发送的邮箱地址发送给多个地址需要写成数组形式*@paramstring$subject标题*@paramstring$content内容*@returnboolean是否成功*/functionsend_email($address,$subject,$content){$email_smtp=C('EMAIL_SMTP');$email_username=C('EMAIL_USERNAME');$email_password=C('EMAIL_PASSWORD');$email_from_name=C('EMAIL_FROM_NAME');if(empty($email_smtp)||empty($email_username)||empty($email_password)||empty($email_from_name)){returnarray("error"=>1,"message"=>'邮箱配置不完整');}require'./ThinkPHP/Library/Org/Nx/class.phpmailer.php';require'./ThinkPHP/Library/Org/Nx/class.smtp.php';$phpmailer=new\Phpmailer();//设置PHPMailer使用SMTP服务器发送Email$phpmailer->IsSMTP();//设置为html格式$phpmailer->IsHTML(true);//设置邮件的字符编码'$phpmailer->CharSet='UTF-8';//设置SMTP服务器。$phpmailer->Host=$email_smtp;//设置为"需要验证"$phpmailer->SMTPAuth=true;//设置用户名$phpmailer->Username=$email_username;//设置密码$phpmailer->Password=$email_password;//设置邮件头的From字段。$phpmailer->From=$email_username;//设置发件人名字$phpmailer->FromName=$email_from_name;//添加收件人地址,可以多次使用来添加多个收件人if(is_array($address)){foreach($addressas$addressv){$phpmailer->AddAddress($addressv);}}else{$phpmailer->AddAddress($address);}//设置邮件标题$phpmailer->Subject=$subject;//设置邮件正文$phpmailer->Body=$content;//发送邮件。if(!$phpmailer->Send()){$phpmailererror=$phpmailer->ErrorInfo;returnarray("error"=>1,"message"=>$phpmailererror);}else{returnarray("error"=>0);}}

发送邮件调用函数;

send_email('baijunyao@baijunyao','邮件标题','邮件内容');//如果群发邮件则传入数组即可$emails=array('b1@baijunyao.com','b2@baijunyao.com');send_email($emails,'邮件标题','邮件内容');

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com