因为tp5需要命名空间支持,我的phpmailer类已经加好了命名空间,下载后解压直接放到vendor 目录下即可直接在控制器调用就行。
百度网盘地址:https://pan.baidu.com/s/1eI0wqv9ydJQyayyUfyljKg
至于基础的qq smtp设置我就不做赘述,qq邮箱设置里面可以直接找到(貌似新浪,163等所有的邮箱smtp开启方式都大同小异,基本都是在设置里面,而且同时在开启的时候都需要获取授权码【重点:在引用的时候需要设置邮箱的账号和密码,此处的密码并非指邮箱密码,就是指这个授权码,当初问了这东西折腾我好久】)。废话不多说,直接上代码:
首先需要在头部use一下
use phpmailer\phpmailer;
public function sendEmail($data = []) {
Vendor('phpmailer.phpmailer');
$mail = new PHPMailer(); //实例化
$mail->IsSMTP(); // 启用SMTP
$mail->Host = 'smtp.qq.com'; //SMTP服务器 以qq邮箱为例子
$mail->Port = 465; //邮件发送端口
$mail->SMTPAuth = true; //启用SMTP认证
$mail->SMTPSecure = "ssl"; // 设置安全验证方式为ssl
$mail->CharSet = "UTF-8"; //字符集
$mail->Encoding = "base64"; //编码方式
$mail->Username = '*******@qq.com'; //你的邮箱
$mail->Password = '*******'; //你的密码 ==>重点:是授权码,不是邮箱密码
$mail->Subject = '邮箱验证'; //邮件标题
$mail->From = '*******@qq.com'; //发件人地址(也就是你的邮箱)
$mail->FromName = '优倍素材网'; //发件人姓名
if($data && is_array($data)){
foreach ($data as $k=>$v){
$mail->AddAddress($v['user_email'], "亲"); //添加收件人(地址,昵称)
$mail->IsHTML(true); //支持html格式内容
$mail->Body = $v['content']; //邮件主体内容
//发送成功就删除
if ($mail->Send()) {
//echo "Mailer Error: ".$mail->ErrorInfo;// 输出错误信息,用以邮件发送不成功问题排查
return 1;
}else{
return -1;
}
}
}
}
接下来是引用,前端文件传入一个邮箱地址:
public function bangding(){
$eq_num = rand(100000,999999);
$send_data = [
'user_email' => $postdata['mail'],
'content' => '您正在申请优倍素材网邮箱验证,此次操作验证码是'.$eq_num.",如非本人操作,请勿理会。"
];
$send_effect = $this->sendEmail([$send_data]);
if($send_effect){
return ['code'=>1,'msg'=>'邮件发送成功,请注意查收'];
}else{
return ['code'=>-1,'msg'=>'邮件发送失败,请联管理员'];
}
}