thinkphp5使用phpmailer发送邮件

时间:2022-09-24 14:54:27

1、首先让邮箱开启smtp服务,本案例使用163的SMTP服务器: smtp.163.com发送邮件 

2、下载phpmailer,在tp项目里的extends文件夹下新建一个文件夹phpmailer,把class.phpmailer.php和class.smtp.php放到里面,修改文件名为phpmailer.php和 SMTP.php\\注意这里是大写的SMTP(因为在phpmailer.php中实例化SMTP类是大写的,tp5中实例化类名要与文件名要一致),不然会报错的,然后在两个文件内头部加入命名空间namespace phpmailer;
3、 在phpmailer.php中的2315行使用到了php的Exception异常类,在thinkphp框架中直接继承,thinkphp找不到Exception所以要在 Exception前加上反斜杠 \

thinkphp5使用phpmailer发送邮件

 
4、在公共文件common.php中加入下面代码
/*
* 发送邮件
* @param $to string 要发送的邮箱地址
* @param $title string 邮件标题
* @param $content string 邮件内容
* @return bool
* */

function sendMail($to, $title, $content) {

$mail = new \phpmailer\phpmailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host=config('MAIL_HOST'); //smtp服务器的名称(这里以163邮箱为例)
$mail->SMTPAuth = config('MAIL_SMTPAUTH'); //启用smtp认证
$mail->Username = config('MAIL_USERNAME'); //发件人邮箱名
$mail->Password = config('MAIL_PASSWORD') ; //163邮箱发件人授权密码
$mail->From = config('MAIL_FROM'); //发件人地址(也就是你的邮箱地址)
$mail->FromName = config('MAIL_FROMNAME'); //发件人姓名
$mail->AddAddress($to,"尊敬的客户");
$mail->WordWrap = 50; //设置每行字符长度
$mail->IsHTML(config('MAIL_ISHTML')); // 是否HTML格式邮件
$mail->CharSet=config('MAIL_CHARSET'); //设置邮件编码
$mail->Subject =$title; //邮件主题
$mail->Body = $content; //邮件内容
$mail->AltBody = "邮件验证,请用网页打开"; //邮件正文不支持HTML的备用显示
return($mail->Send());
}

 

 

 
5、在公共配置文件config.php中加入下面代码
//邮箱验证配置
'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称
'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证
'MAIL_USERNAME' =>'177****123@163.com',//发件人的邮箱名
'MAIL_PASSWORD' =>'*******',//163邮箱发件人授权密码
'MAIL_FROM' =>'177****123@163.com',//发件人邮箱地址
'MAIL_FROMNAME'=>'美丽说商城',//发件人姓名
'MAIL_CHARSET' =>'utf-8',//设置邮件编码
'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件

 

6、在需要使用的地方调用函数即可
sendMail('38****03@qq.com','邮件标题','邮件内容');

 

更多内容参考: http://blog.****.net/iloveyougirls/article/details/52710284