Thinkphp5 phpmailer QQ邮箱发送邮件

时间:2021-12-07 06:43:41

网上看到到各路大神都总结的很详细,自己项目也用到过一次这个功能,就直接把整理好的代码分享一下

因为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'=>'邮件发送失败,请联管理员'];
      }
}

学习参考:https://www.51sucai.com.cn/home/caselist/casedetail/caseid/68.shtml

分享一个学习网站:优倍素材网;汇总了网上最常用的素材使用方法