[email protected]   15826058953
B2B外贸网站建设与运营,WEB服务器运维,始于2016。

thinkphp3.2.3使用PHPMailer发送QQ邮件

2020-07-05     网络    

前一篇文件讲过thinkphp如何使用Smtp类发送邮件,文章地址为:thinkphp3.2.3使用smtp发送email,这两种方式都一样,必须要发送方开启smtp服务才行;

但由于QQ发邮件相对来说比较严格一些,必须使用一个叫PHPMailer的扩展包才行,这个可以从网站搜索下载即可,本站暂不提供,只需要展示一下控制器代码即可,如下:


namespace Home\Controller;

class MessageController extends Controller{
    public function index(){
        if(IS_POST){       
            $data=I('post.');
            $emailtitle='网站留言-'.$data['name'];
            $emailcontent="姓名:{$data['name']} 
电话: {$data['mobile']} 
邮箱: {$data['email']} 
 留言内容: {$data['message']}";
            
            $state=$this->sendQQMail($emailtitle,$emailcontent);
            
            if($state){
                $this->success('留言成功');
            } else {
                $this->error('留言失败');
            }
        } else {
            $this->display();
        }
    }

    //发送QQ邮件
    private function sendQQMail($title, $content,$to='接收方邮箱地址') {
        Vendor('PHPMailer.PHPMailerAutoload');     //这里需要引入PHPMailer包,包放在ThinkPHP/Library/Vender目录下
        $mail = new PHPMailer(); //实例化
        $mail->IsSMTP(); // 启用SMTP
        $mail->Host='smtp.qq.com'; //smtp服务器的名称
        $mail->SMTPAuth = TRUE; //启用smtp认证
        $mail->Username = '发送方邮箱名'; //你的邮箱名
        $mail->Password = '发送方邮箱授权码' ; //QQ邮箱的制授权码,注意这里和其他邮件发送不一样
        $mail->From = '发送方邮箱地址'; //发件人地址
        $mail->FromName = '发件人姓名'; //发件人姓名
        $mail->SMTPSecure = 'tls'; // 启用TLS加密,“ssl”也被接受。
        $mail->Port = 587;          // 连接到TCP端口
        $mail->AddAddress($to);
        $mail->WordWrap = 50; //设置每行字符长度
        $mail->IsHTML(true); // 是否HTML格式邮件
        $mail->CharSet='utf-8'; //设置邮件编码
        $mail->Subject =$title; //邮件主题
        $mail->Body = $content; //邮件内容
        $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示
        $mail->debug = true;
        return($mail->Send());
    }
}