Thinkphp6 发送信息至邮箱

因项目需求发送验证码至用户邮箱,记录一下方便以后使用

以QQ邮箱为例:

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

1.登录qq邮箱,在首页上找到“设置-》账户 下滑找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”。
在这里插入图片描述
2.选择开启的服务,开启IMAP/SMTP服务得到授权码。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d79fa2a68bf84188b3c5521da9583be6.png

3.服务开启成功后会有一个授权码,需要记录下来,后续会用到

![在这里插入图片描述](https://img-blog.csdnimg.cn/112039ecb40a4e3faeb28a04fd89ea08.png

4.设置完客户端授权密码后就成功开通了SMTP服务
在这里插入图片描述

二、根目录下composer 安装phpmailer压缩包

    composer require phpmailer/phpmailer

执行完成后会在项目中的vendor目录下新建一个phpmailer文件夹
在这里插入图片描述

三、直接上代码

<?php
namespace app\controller;

use app\BaseController;
//引用mail
use PHPMailer\PHPMailer\PHPMailer;

class Index extends BaseController
{
    public function index()
    {
        //接受输入的mail
        $sumail = input("email", "");

        //判断邮箱不能为空
        if (empty($sumail)) {
            return show(config("code.status.error"), "邮箱不能为空");
        }
        $toemail = $sumail;//定义收件人的邮箱
        $mail = new PHPMailer();
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8,不设置编码的话,中文会出现乱码
        $mail->Host = "smtp.qq.com";// 发送方的SMTP服务器地址

        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "发送方的邮箱用户名";// 发送方的邮箱用户名,就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
        $mail->Password = "刚记录下来的授权码";// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!</span><span style="color:#333333;">
        $mail->SMTPSecure = "ssl";// 使用ssl协议方式</span><span style="color:#333333;">
        $mail->Port = 465;// 163邮箱的ssl协议方式端口号是465/994

        $mail->setFrom("xxx", "xxx");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
        $mail->addAddress($toemail, '小白商城');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
        $mail->addReplyTo("xxxx", "xx");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件
        $mail->Subject = "测试邮件发送";// 邮件标题

        $codecheck = "123456";        //  邮箱验证码封存,可以改为数组生成随机验证码
        $mail->Body = "邮件内容是 <b>您的验证码是:$codecheck</b>,哈哈哈!";// 邮件正文
        $mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用

        if (!$mail->send()) {// 发送邮件
            echo "验证码发送失败" . $mail->ErrorInfo;;

        } else {
            echo '发送成功';
        }

    }


}

注意 控制器需要引入PHPMailer
在这里插入图片描述然后根据注释填上自己相关的信息

测试:
在这里插入图片描述QQ邮箱:
在这里插入图片描述

到此tp6发送邮箱验证码就完成了,后续可根据自己需求处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值