tp5利用PHPMailer发送邮件功能

首先,你需要有一个域名…

PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer注意选择要下载的是master包下的
使用git命令克隆到本地,或直接在该项目页面的右下方点击“ Download ZIP ”即可获取到完整的PHPMailer代码包。

第一部分:开通qq邮箱下的“域名邮箱”
由于开通“域名邮箱”仅是操作方式的理解,这部分仅作略讲。

进入QQ邮箱,点击页面左上方“设置”,再点击“邮箱设置”下的“账户”选项卡,拖动滚动条,即可看到“域名邮箱”,点击“管理域名邮箱”即可进入域名邮箱添加的页面;或者直接点击http://domain.mail.qq.com/

点击“创建域名邮箱”,按页面提示添加自己的域名并验证。PS:若您的qq邮箱下成功添加了“域名邮箱”,那么进入qq邮箱后,页面左上方“设置”按钮之后会有“域名邮箱”的文字

为该域名邮箱添加自己专属的邮件地址,点击审核通过的“域名邮箱”中的“成员管理”,点击“添加成员”,输入自己的域名下心仪的邮箱名,然后添加qq号(该qq号即作为该新添加的邮箱的使用者,该qq号需开通qq邮箱且未关闭数字账号)

刚刚输入的那个qq号的qq邮箱会收到一封开通域名邮箱的通知邮件,在邮件中点击“接受这个邮箱账号”,利用PHPMailer发送邮件的发件人邮箱地址即设置完成,为了便于叙述这个邮箱地址称之为“发件人邮箱”。

在这里插入图片描述
授权码获取
qq邮箱-设置-账户
在这里插入图片描述

至此qq邮箱下的“域名邮箱”开通并添加了待会使用PHPMailer发送作为发件人的邮箱地址。这里列出几项关键的待会PHPMailer需要使用的信息:QQ号,上述第三步添加的qq号码、“授权码”、“发件人邮箱”、发件人姓名…

第二部分:使用PHPMailer编写发送邮箱的代码
php开启sockets扩展和openssl扩展
在这里插入图片描述
在这里插入图片描述
代码部分

    /**
     * 发送邮箱验证码
     */
    public function getEmailCode(Request $request)
    {
        $email = $request->post('email');
        if(!$email){
            $this->error('邮箱号格式错误');
        }
        $res = $this->sendEmail('xxxxxx@qq.com','test','test');
        var_dump($res);
    }

    /**
     * 发送邮箱验证码
     * @param $to收件人 $title标题 $content内容
     */
    public function sendEmail($to, $title, $content)
    {
        //实例化PHPMailer核心类
        $mail = new PHPMailer();

        //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
//        $mail->SMTPDebug = 1;

        //使用smtp鉴权方式发送邮件
        $mail->isSMTP();

        //smtp需要鉴权 这个必须是true
        $mail->SMTPAuth=true;

        //链接qq域名邮箱的服务器地址
        $mail->Host = 'smtp.qq.com';

        //设置使用ssl加密方式登录鉴权
        $mail->SMTPSecure = 'ssl';

        //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
        $mail->Port = 465;

        //设置smtp的hello消息头 这个可有可无 内容任意
        $mail->Helo = 'Welcome smtp.qq.com Richard';

        //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用自己的域名
        $mail->Hostname = 'http://www.xxxxx.com';

        //设置发送的邮件的编码 可选GB2312 或utf-8 测试发现utf8在360浏览器收信下可能会乱码
        $mail->CharSet = 'UTF-8';

        //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
        $mail->FromName = 'xxx';

        //smtp登录的账号 这里填入字符串格式的QQ号即可,x代表阿拉伯数字(你的QQ号)
        $mail->Username ='xxxx';

        //smtp登录的密码;使用生成的授权码(就刚才叫你保存的最新的授权码)不要听信什么这那的“独立密码”,//因为我测试报错提示就是SMTP授权码不正确,x代表授权码(刚让保存的)
        $mail->Password = 'xxx';

        //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”,x代表阿拉伯数字(你的QQ号)
        $mail->From = 'xxx@qq.com';

        //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
        $mail->isHTML(true);

        //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 第二个参数会在发送成功的邮件收件人那边显示
        $mail->addAddress($to);

        //添加多个收件人 则多次调用方法即可
//        $mail->addAddress('xxxxxx@gmail.com','xxxGooGle邮箱');

        //添加该邮件的主题
        $mail->Subject = $title;

        //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件
        $mail->Body = $content;

        //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
//        $mail->addAttachment('./apply/aop.zip','login.zip');

        //同样该方法可以多次调用 上传多个附件
//        $mail->addAttachment('./apply/img/1.png','1.png');

        //发送命令 返回布尔值
        //PS:经过测试,如果收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效
        $status = $mail->send();

        var_dump($status);
        //简单的判断与提示信息
        if($status) {
            return true;
        } else {
            return false;
        }

    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值