php实现给客户发送邮件email验证码的功能。

发布时间:2021-08-02作者:小灵龙点击:182

问题描述:

   实现给客户发送邮件的功能。

解决办法:

下载phpmailer

<script type="text/javascript">
    function getCodeByEmlForPass(){
        var usrName = $("#usrNameHid").val();
        $.ajax({
            type: "post",
            dataType: "json",
            url: "/public/home/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>
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中的自定义类
    $mail = new \PHPMailer\PHPMailer(); //实例化
    header("content-type:text/html;charset=utf-8");
    // 使用SMTP方式发送
    $mail->IsSMTP();  //在本地发送成功,但是在服务器上就发送失败显示SMTP connect failed,把isSMTP去掉试试吧
    // 设置邮件的字符编码
    $mail->CharSet='UTF-8';
    // 企业邮局域名
    $mail->Host = 'smtp.exmail.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 = 'iola@itulan.com' ;
    // $mail->Username = 'l91.bt@163.com' ;
    // 邮件发送人的 密码 (授权码)
    $mail->Password = '5Y7eifywAvhu';  //修改为自己的授权码
    //邮件发送者email地址
    $mail->From ="i-a@itulan.com";
    //发送邮件人的标题
    $mail->FromName ="荼兰信息";
    //收件人的邮箱 给谁发邮件
    $email_addr = $recive_email;
    //收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")
    $mail->AddAddress("$email_addr", substr(  $email_addr, 0 , strpos($email_addr ,'@')));
    //回复的地址
    $mail->AddReplyTo('ila@itulan.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;
}
标签: