TP6使用邮件类发送邮件

发布时间 2024-01-11 15:15:27作者: 车车大人

一、开启SMTP服务(使用php发送邮件需要用到SMTP服务,这里以QQ邮箱的SMTP服务为例)

1.登录qq邮箱,在首页上找到“设置”。

2.选择开启的服务,一般都全选,POP3/SMTP/IMAP,开启SMTP服务就得先开通客户授权码。

3.点击开通客户授权码,选择开启

4.需要手机验证码,需要绑定手机号。

5.SMTP服务需要输入客户端授权密码,这个密码就是是你在第三方客户端上的邮箱登录密码(在后面使用phpmailer发送邮件时会用到),如果在第三方客户端上输入之前的邮箱登录密码就会出错。

6.设置完客户端授权密码后就成功开通了SMTP服务

二、首先下载phpmailer压缩包

在tp6的项目中的extend目录下新建一个phpmailer文件夹

composer require phpmailer/phpmailer

然后把phpmailer.php 和smtp.php文件复制到目录下(只有这两个文件有用) 修改命名空间

添加phpmailer中添加 use think\Exception

此外要确保安装了 openssl扩展

三、发送邮件函数

/**
     * [向邮箱发送验证码]
     * @param  [String] $email [目标emial]
     * @param  [Number] $code     [验证码]
     * @return [json]           [执行结果]
     */
    public function sendCodeToEmail($email, $code)
    {

        $toemail = $email;
        $mail = new PHPMailer();
        $mail->isSMTP();  //使用smtp鉴权方式发送邮件
        $mail->CharSet = 'utf8';   //设置编码
        $mail->Host = 'smtp.qq.com';  //qq邮箱smtp邮箱
        $mail->SMTPAuth = true;    //是否需要认证身份
        $mail->Username = "123456789@qq.com";  //发送方邮箱
        $mail->Password = "**********";    //发送方smtp密码 
        $mail->SMTPSecure = 'ssl';    //使用的协议
        $mail->Port = 465;   //qq邮箱接收的端口号
        $mail->setFrom('123456789@qq.com', '验证码发送');  //定义邮件及标题(不同邮件标题显示不一致)
        $mail->addAddress($toemail, '您好!');  //要发送的地址和设置地址的昵称
        $mail->addReplyTo('123456789@qq.com', 'Replay'); //回复地址
        $mail->Subject = "您有新的验证码!";  //添加该邮件的主题
        $mail->Body = "您的验证码是" . $code . ",验证码的有效期为600秒,本邮件请勿回复!"; //该邮件内容

        //如果发送失败
        if (!$mail->send()) {
            $this->return_msg(400, $mail->ErrorInfo);
        } else {
            $this->return_msg(200, '验证码发送成功,请注意查收!');
        }
    }