11、ThinkPHP6实战开发高大上企业站(TP6)之邮件发送

前言

今天给大家带来邮件发送的功能。

开启邮箱STMTP功能

1、进入qq邮箱后台,找到账户

2、在服务状态处点击开启服务

 

插件安装

composer require phpmailer/phpmailer

邮箱发送代码

public function emailTest()
    {
        $params = Request()->param();

        // 实例化
        $mail = new PHPMailer();

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

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

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

        // 因为我发送邮件用的是QQ邮箱,这里填写qq域名邮箱的服务器地址,163是“smtp.163.com”
        $mail->Host = $params['smtpServer'];

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

        // 设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587
        $mail->Port = $params['smtpPort'];

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

        // 设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
        $mail->Hostname = '';

        // 设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
        $mail->CharSet = 'UTF-8';

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

        // smtp登录的账号,就是QQ邮箱登录账号
        $mail->Username = $params['smtpEmail'];

        // smtp登录的密码,就是上面第一步记录的密码
        $mail->Password = $params['smtpPassword'];

        // 设置发件人邮箱地址,就是开启这个smtp的邮箱地址
        $mail->From = $params['smtpEmail'];

        // 邮件正文是否为html编码
        $mail->isHTML(true);

        // 设置收件人邮箱地址,该方法有两个参数:第一个参数为收件人邮箱地址;第二参数为给该地址设置的昵称,不同的邮箱系统会自动进行处理变动,这里第二个参数的意义不大
        $mail->addAddress($params['smptTestRecvEmail'], '');

        // 添加多个收件人
        // $mail->addAddress('xxx@163.com','');

        //添加该邮件的主题
        $mail->Subject = $params['smptTestTitle']; // $title;

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

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

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

        $status = $mail->send();

        // 简单的判断与提示信息
        if ($status) {
            return jsonSuccess('网站邮箱发送测试成功~', "");
        } else {
            return jsonError('网站邮箱发送测试失败~');
        }
    }

 前端代码

<div class="layui-form" wid100 lay-filter="form-email">
        <div class="layui-col-md6">
        <div class="layui-form-item">
          <label class="layui-form-label">SMTP服务器</label>
          <div class="layui-input-inline">
            <input type="text" name="smtpServer" value="smtp.aliyun.com" class="layui-input">
          </div>
          <div class="layui-form-mid layui-word-aux">如:smtp.163.com</div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">SMTP端口号</label>
          <div class="layui-input-inline" style="width: 20%;">
            <input type="text" name="smtpPort" lay-verify="number" value="25" class="layui-input">
          </div>
          <div class="layui-form-mid layui-word-aux">一般为 25 或 465</div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">发件人邮箱</label>
          <div class="layui-input-inline">
            <input type="text" name="smtpEmail" value="xianxin@layui-inc.com" lay-verify="email" autocomplete="off" class="layui-input">
          </div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">发件人昵称</label>
          <div class="layui-input-inline">
            <input type="text" name="smtpNickname" value="贤心" autocomplete="off" class="layui-input">
          </div>
        </div>
        <div class="layui-form-item">
          <label class="layui-form-label">邮箱登入密码</label>
          <div class="layui-input-inline">
            <input type="password" name="smtpPassword" value="123456" autocomplete="off" class="layui-input">
          </div>
        </div>
        <fieldset class="layui-elem-field">
          <legend>测试邮件信息</legend>
          <div class="layui-field-box">
            <div class="layui-form-item">
              <label class="layui-form-label">收件人邮箱</label>
              <div class="layui-input-inline">
                <input type="text" name="smptTestRecvEmail" value="chiyuba@qq.com" lay-verify="email" autocomplete="off" class="layui-input">
              </div>
            </div>
            <div class="layui-form-item">
              <label class="layui-form-label">测试标题</label>
              <div class="layui-input-inline">
                <input type="text" name="smptTestTitle" placeholder="测试标题" value="测试标题" class="layui-input">
              </div>
            </div>
            <div class="layui-form-item">
              <label class="layui-form-label">测试内容</label>
              <div class="layui-input-inline">
                <textarea name="smptTestContent" placeholder="测试内容" value="测试内容" class="layui-textarea"></textarea>
              </div>
            </div>
          </div>
        </fieldset>
        <div class="layui-form-item">
          <div class="layui-input-block">
            <button class="pear-btn pear-btn-primary" lay-submit lay-filter="set_system_email">保存配置</button>
            <button class="pear-btn pear-btn-primary" lay-submit lay-filter="set_system_email_test">测试发送</button>
          </div>
        </div>
      </div>

 

前端效果

注意此处的邮箱登入密码为:SMTP服务开启后的授权码

 

最终效果

 

版权声明:
作者:小何
链接:https://ligo100.cn/houduanjishu/php/518.html
来源:小何博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录