laravel 发送邮件验证码
php 函数
//发送邮件验证码 public function send_email_register_code(Request $request){ $toEmail = $request->get('email'); if(!filter_var($toEmail, FILTER_VALIDATE_EMAIL)){ return Y::error('邮箱验证失败!',["code"=>"ERROR_FORMAT"]); } //判断数据库是否有30分钟内没验证的code $emailCode = EmailCode::where(['email'=>$toEmail])->where(['status'=>1])->where('created_at', '>', date("Y-m-d H:i:s", strtotime("-3 minute")))->take(1)->orderBy('id','desc')->get(); if(!$emailCode->isEmpty()){ return Y::error('请不要重复发送!',["code"=>"ERROR_REPEAT"]); } //生成6位code,保存email code表 $code = mt_rand(100000,999999); $data = array( 'uid'=> 0, 'email'=> $toEmail, 'code'=> $code, 'type'=> 'register', 'status'=> 1 ); $createData = EmailCode::create($data); if(!$createData){ return Y::error('发送失败,请联系管理员!',["code"=>"ERROR_CREATE"]); } //send发模板 raw 发送文本 $subject = "江苏ak有限公司邮件验证信息"; Mail::send('home.member.account.email_register_code',['code'=>$code],function($message) use ($toEmail, $subject){ $message ->to($toEmail)->subject($subject); }); return Y::success('发送邮件成功!请查收!',["code"=>"SUCCESS"]); }
前台js点击倒计时
// 定时器 var wait = 180; get_code_time = function (o) { if (wait == 0) { o.removeAttribute("disabled"); o.value = "获取验证码"; wait = 180; } else { o.setAttribute("disabled", true); o.value = "(" + wait + ")秒后重新获取"; wait--; setTimeout(function () { get_code_time(o) }, 1000) } }; $("#emailSendBtn").click(function () { var email = $.trim($("#user_email").val()); var o = this; if (isEmail(email) == false) { alert_message('提示','请输入合法的电子邮箱!',null,function(){ close_alert_div(); $("#user_email").focus(); }); return false; } //发送验证码 $.ajax({ url: "{{route("send_email_register_code")}}", data: { "_token": "{{ csrf_token() }}", "email": email }, type: "post", dataType: 'json', success:function (data) { close_loading_div(); if(data.data.code == "SUCCESS"){ get_code_time(o); } alert_message('提示',data.msg,null,function(){ close_alert_div(); }); }, error:function (data) { close_loading_div(); alert_message('提示',data.msg,null,function(){ close_alert_div(); }) } }); }); //验证邮箱 function isEmail(email) { var email_reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; return email_reg.test(email); }