ThinkPHP3.2结合PHPMailer发送邮件

时间:2022-09-24 13:58:11

前些天没事儿捣鼓了下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一起学习交流