网上发送邮件的例子有很多,今天这篇文章主要是采用了tp5和结合PHPMailer实现的,也算是比较新的了。
php命名空间是在php5.3中引入的,也得到了大家的认可,有不太懂的可以自行去学习。
thinkphp呢,不用多说了吧。本文主要是用了目前最新的tp5。
PHPMailer是一个用于发送电子邮件的php函数包,网上也有许多下载,不做太多解释。
1.第一步 准备文件
我们需要用到其中俩个类文件class.phpmailer.php和class.smtp.php
因为TP5的命名规范,更加简洁,所以这里我简单得对俩个文件改了一下名称Mail.php,Smtp.php
如图所示。把他放到了我项目中的扩展里面,大家可自行根据自己的项目位置来放。
2.第二步 增加命名空间
因为默认这俩个文件是没有命名空间的 所以得我们自己手动加一下。我的命名是namespace org;
3.第三步 引入使用
这个时候我们就基本可以直接使用了,下面代码大家自己根据情况而写。
首先我们在配置文件中加入配置项 config.php
1 2 3 4 5 6 7 8 9 | // 配置邮件发送服务器 'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称 'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证 'MAIL_USERNAME' =>'xxxxxx@163.com',//你的邮箱名 'MAIL_FROM' =>'xxxxxx@163.com',//发件人地址 'MAIL_FROMNAME'=>'姓名',//发件人姓名 'MAIL_PASSWORD' =>'xxxx',//密码 注意这里是邮箱授权码 'MAIL_CHARSET' =>'utf-8',//设置邮件编码 'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件 |
然后在公共类文件中加入方法 common.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /** * 邮件发送函数 */ function sendMail($to, $title, $content,$mail) { $mail->IsSMTP(); // 启用SMTP $mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证 $mail->Username = C('MAIL_USERNAME'); //你的邮箱名 $mail->Password = C('MAIL_PASSWORD') ; //邮箱密码 $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址) $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名 $mail->AddAddress($to,"尊敬的客户"); $mail->WordWrap = 50; //设置每行字符长度 $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件 $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码 $mail->Subject =$title; //邮件主题 $mail->Body = $content; //邮件内容 $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示 return($mail->Send()); } |
最后呢大家在自己需要调用的控制器中调用即可,可别忘了引入空间!
1 2 | $m = new Mail(); sendMail('xxxxxx@qq.com','标题','内容',$m) |
常见的错误原因
1.这里是需要你邮箱开启STMP服务的
登录你的邮箱手动开启STMP服务,这个服务默认是关闭的,一定要去邮箱->设置 里去手动开启,开启时要求你设置一个独立密码,这个密码就是配置文件中的密码。
2.有时候可能会发送成功,但是对方没有接受到邮件
这里有可能是在系统默认为了垃圾邮件,需要自己到垃圾箱中找一下,QQ邮箱经常的事。
最后说的是
这里我也只是跟大家说了一下我的怎么应用,你只需要理解即可,而实际的应用呢,是需要大家自己变更的。