前些天没事儿捣鼓了下TP3.2结合PHPMailer发送邮件,记录下来,一方面做为笔记,另一方面也希望能对大家有所帮助
准备工作:
下载 ThinkPHP3.23
下载 PHPMailer
方法一
1.将PHPMailer解压后 在ThinkPHP\Library\Org\Util目录下新建一个文件夹PHPMailer,如果你觉得麻烦可以将解压后的所有文件放到该文件夹下,或者只将class.phpmailer.php和class.smtp.php这两个文件拷贝到该目录下即可
2.在Common模块中的function.php中添加一个公共的方法
<span style="font-size:14px;">function sendEmail($toUser,$toUserAlias,$subject,$content){ $mail = new Org\Util\PHPMailer\PHPMailer;//因为我个人将两个类文件名分别改为了PHPMailer.class.php和</span><span style="font-size:14px;">SMTP.class.php $mail->isSMTP(); $mail->CharSet='UTF-8'; $mail->Host = 'smtp.qq.com'; $mail->SMTPAuth = true; $mail->Username = '595736620@qq.com'; $mail->Password = '******'; $mail->Port = 25; $mail->From = '595736620@qq.com'; $mail->FromName = '胡小军'; $mail->addAddress($toUser,$toUserAlias); $mail->WordWrap = 50; $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $content; $mail->AltBody = $content; if(!$mail->send()){ exit(json_encode(array('code'=>-9,'msg'=>$mail->ErrorInfo))); } }</span>在该方法中,相关参数可以从配置文件中读取,为了方便阅读,我给些成了固定的;相关参数大家可以百度下,根据自己的业务需求来配置相关参数;
注意:1.该形式需要添加命名空间 两个主要的类文件都需要添加
namespace Org\Util\PHPMailer; class PHPMailer{ //注意添加位置
2.运行时class phpmailerException extends Exception会报错,原因是not found class Exception
解决办法是改为class phpmailerException extends \Exception 或者 class phpmailerException extends Think\Exception
3.调用 在控制器中调用sendEmail()方法即可
<span style="font-size:14px;">sendEmail('1031393320@qq.com','思狐工作室','phpmailer邮件测试','测试邮件内容');</span>
方法二
1.将PHPMailer解压后 在ThinkPHP\Library\Vendor目录下新建一个文件夹PHPMailer,如果你觉得麻烦可以将解压后的所有文件放到该文件夹下,或者只将class.phpmailer.php和class.smtp.php这两个文件拷贝到该目录下即可
2.在Common模块中的function.php中添加一个公共的方法
<span style="font-size:14px;">function sendEmail($toUser,$toUserAlias,$subject,$content){ vendor('PHPMailer.class#phpmailer'); vendor('PHPMailer.class#smtp'); $mail = new PHPMailer(); $mail->isSMTP(); $mail->CharSet='UTF-8'; $mail->Host = 'smtp.qq.com'; $mail->SMTPAuth = true; $mail->Username = '595736620@qq.com'; $mail->Password = 'huxiaojun1989'; $mail->Port = 25; $mail->From = '595736620@qq.com'; $mail->FromName = '胡小军'; $mail->addAddress($toUser,$toUserAlias); $mail->WordWrap = 50; $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $content; $mail->AltBody = $content; if(!$mail->send()){ exit(json_encode(array('code'=>-9,'msg'=>$mail->ErrorInfo))); } }</span>方法体和方法一几乎一样,区别在于导入方式;采用该方法不用修改命名空间;
3.调用 在控制器中调用sendEmail()方法即可
<span style="font-size:14px;">sendEmail('1031393320@qq.com','思狐工作室','phpmailer邮件测试','测试邮件内容');</span>
我也是小白,但如果在使用中遇到什么问题,或是以上有什么不对的地方,可以加我Q:595736620一起学习交流