tp5中phpmail插件的使用
未知
2023-04-11 10:29:32
0

 数据库中新建一个表有验证码、过期时间、邮箱地址三个字段。比对客户输入的验证码是否正确。

html页面中的代码

              <label class="control-label fl"><span>请输入邮箱收到的验证码:</span></label>
              <div class="fl clearfix">
                   <input class="form-control fl" type="text" id="usrEmlCode"/>
                   <a href="javascript:" class="code-btn fl " id="emlLink" onclick="getCodeByEmlForPass()">获取邮件验证码</a>
                   <p class="code-text fl">验证码10分钟内有效</p>
              </div>
<script type="text/javascript">
    function getCodeByEmlForPass(){
        var usrName = $("#usrNameHid").val();
        $.ajax({
            type: "post",
            dataType: "json",
            url: "/e/login/sendemail",
            data: { "email": usrName},
            beforeSend: function (xhr) {
                $('#emlLink').removeAttr('onclick').css("cursor", "not-allowed");
            },
            success: function (ret) {
                console.log(ret);
                if (ret.code == "1000") {
                    startTimer('emlLink');
                    alert('验证码已经发送到您的邮箱!');
                } else {
                    $('#emlLink').attr('onclick', 'getCodeByEmlForPass()').css("cursor", "pointer");
                    alert(ret.msg);
                }
            }
        });      
    }
</script>

log.php中的代码

// ajax给用户发送邮件验证码,点击【获取邮件验证码】
    public function sendEmail(){
        $recieve_email=input('email');
        //把用户邮箱、验证码和到期时间插入到表phpmail
        $data['check_code']=substr(md5(uniqid()), 0,6);
        $data['chkcode_period']=time()+600;
        $data['email']=$recieve_email;
        Db::name('phpmail')->insert($data);

        $mail=phpEmail($recieve_email,$data['check_code']);
        return json($mail);
    }

common.php中的代码

function phpEmail($recive_email,$code){
    Loader::import('phpmailer.phpmailer');//加载extend中的自定义类
    Loader::import('phpmailer.SMTP');//加载extend中的自定义类

    $openssl_funcs=get_extension_funcs('openssl');
    if(!$openssl_funcs){
        $mail_return_arr['code'] = 1001 ;
        
        $mail_return_arr['msg'] = "请先开启openssl扩展" ;
        return $mail_return_arr;
    }
    $mail = new \PHPMailer\PHPMailer(); //实例化
    header("content-type:text/html;charset=utf-8");
    // 使用SMTP方式发送
    $mail->IsSMTP();
    // 设置邮件的字符编码
    $mail->CharSet='UTF-8';
    // 企业邮局域名
    $mail->Host = 'smtp.qq.com';
    // $mail->Host = 'smtp.163.com';
    //---------qq邮箱需要的------//设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = 'ssl';
    //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    $mail->Port = 465;//---------qq邮箱需要的------
    // 启用SMTP验证功能
    $mail->SMTPAuth = true;
    //邮件发送人的用户名(请填写完整的email地址)
    $mail->Username = '3320@qq.com' ;
    // $mail->Username = 'lun68@163.com' ;
    // 邮件发送人的 密码 (授权码)
    $mail->Password = 'tctqidfhi';  //修改为自己的授权码
    //邮件发送者email地址
    $mail->From ="3320@qq.com";
    //发送邮件人的标题
    $mail->FromName ="信息";
    //收件人的邮箱 给谁发邮件
    $email_addr = $recive_email;
    //收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
    $mail->AddAddress("$email_addr", substr(  $email_addr, 0 , strpos($email_addr ,'@')));
    //回复的地址
    $mail->AddReplyTo('3320@qq.com' , "" );
    // $mail->AddAttachment("./mail.rar"); // 添加附件
    //set email format to HTML //是否使用HTML格式
    $mail->IsHTML(true);
    //邮件标题
    $mail->Subject = '找回密码验证码';
    //邮件内容
    $mail->Body =  "<p style='color:red'>" . '尊敬的客户<br>您的邮箱验证码:' .$code. ',请在10分钟内完成验证。</p>';
    //附加信息,可以省略
    $mail->AltBody = '';
    // 添加附件,并指定名称
    // $mail->AddAttachment( './error404.php' ,'php文件');
    //设置邮件中的图片
    // $mail->AddEmbeddedImage("shuai.jpg", "my-attach", "shuai.jpg");
        if( !$mail->Send() ){
            $mail_return_arr['code'] = 1001 ;
            $str  =  "邮件发送失败. <p>";
            $str .= "错误原因: " . $mail->ErrorInfo;
            $mail_return_arr['msg'] = $str ;
        }else{
            $mail_return_arr['code'] = 1000 ;
            $str =  "邮件发送成功";
            $mail_return_arr['msg'] = $str ;
        }
       return $mail_return_arr;
}

相关内容

探索 PHP sg15 在...
摘要: 本文探讨了PHP的sg15项目在Web开发中的应用,包括...
2026-02-11 01:23:34
PHP sg15 与数据库...
本文介绍了使用PHP与数据库交互的方法,特别是使用sg15框架或库...
2026-02-10 01:23:38
探索PHP与YAML的互操...
本文探讨了PHP与YAML的互操作性,介绍了YAML的数据格式及P...
2026-02-02 01:23:35
使用PHP处理YAML数据...
本文介绍了使用PHP处理YAML数据的技巧和策略,包括解析、操作Y...
2026-02-01 01:23:40
深入理解MySQL视图的工...
摘要: MySQL视图是一种虚拟表,通过封装SQL查询定义。它不...
2026-01-31 01:23:34
MySQL视图与普通表的区...
MySQL视图与普通表:虚拟与实际的存储方式,视图只可查询不可修改...
2026-01-30 01:23:36

热门资讯

object json转化为数... //调用api 程序,通知商户订单异常 20200314 public function callt...
tp5 composer we... 问题: 正常使用中的tp5程序需要安装微信支付v3。 tp5使用cmd面板composer requ...
laravel 对接支付宝当面... 第一步 开发中心网页移动应用下支付接入 第二步 创建应用后需添加可支付的方式 第三步 配置公钥与私钥...
tp5 jquery判断手机端... application--common.php中添加如下代码 //函数作用是判断用户打开的是手机端还...
Laravel 查看SQL操作... 方法一:临时打印操作记录 DB::connection()-enableQueryLog(); # ...
php 打印date函数出现错... 问题描述: 我使用的是phpstudy,在练习时间函数的时候,打印出现在的时间,date(Y-m-d...
Laravel 5.5 .No... 创建了新的laravel项目后, 运行提示:No application encryption ke...
php函数substr_rep... php函数substr_replace从某个位置替换或删除或插入字符串
生成随机字符唯一标识符guid... /** * @param $length * @return string * 生成随机字符串 */...
layui缩略图 div class=layui-form-item label class=layui-form-l...