Idea:
Use jquery.validate to verify the front desk to verify whether the email exists, etc. Wait, the interaction is done with ajax. Use the mailbox class library on the backend to directly code
Preparation:
1. Download the PHPMailer class library and put it in Application/Thinkphp/Library/Vendor/. Search online, but can’t find it. You can contact me
2. Enable SMTP, give an example of NetEase mailbox
fill in config.php:
// 配置邮件发送服务器 'MAIL_HOST' =>'smtp.163.com',//smtp服务器的名称 'MAIL_SMTPAUTH' =>TRUE, //启用smtp认证 'MAIL_USERNAME' =>'lishine0216@163.com',//你的邮箱名 'MAIL_FROM' =>'lishine0216@163.com',//发件人地址 'MAIL_FROMNAME'=>'南京商丘商会',//发件人姓名 'MAIL_PASSWORD' =>'a3392894',//邮箱密码 'MAIL_CHARSET' =>'utf-8',//设置邮件编码 'MAIL_ISHTML' =>TRUE, // 是否HTML格式邮件
fill in function.php
IsSMTP(); // 启用SMTP $mail->Host=C('MAIL_HOST'); //smtp服务器的名称(这里以QQ邮箱为例) $mail->SMTPAuth = C('MAIL_SMTPAUTH'); //启用smtp认证 $mail->Username = C('MAIL_USERNAME'); //你的邮箱名 $mail->Password = C('MAIL_PASSWORD') ; //邮箱密码 $mail->From = C('MAIL_FROM'); //发件人地址(也就是你的邮箱地址) $mail->FromName = C('MAIL_FROMNAME'); //发件人姓名 $mail->AddAddress($to,"尊敬的客户"); $mail->WordWrap = 50; //设置每行字符长度 $mail->IsHTML(C('MAIL_ISHTML')); // 是否HTML格式邮件 $mail->CharSet=C('MAIL_CHARSET'); //设置邮件编码 $mail->Subject =$title; //邮件主题 $mail->Body = $content; //邮件内容 $mail->AltBody = "这是一个纯文本的身体在非营利的HTML电子邮件客户端"; //邮件正文不支持HTML的备用显示 //return($mail->Send()); if (!$mail->send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message sent!"; } }
Backend:
public function createSMSCode($length = 6){ $min = pow(10 , ($length - 1)); $max = pow(10, $length) - 1; return rand($min, $max); } //ajax发送邮件 public function e_mail_send(){ $e_mail=I("post.e_mail"); $result=M("user")->where(array("e_mail"=>$e_mail))->find(); if($result){ $code=$this->createSMSCode(); //存储验证码,相当于全局变量,因为再次调用createSMSCode时,代码会变 session("code",$code); session("e_mail",$e_mail); SendMail($e_mail,"南京商丘商会验证码","您的验证码是".$code.",请正确填写"); $data="yes"; }else{ $data="no"; } $this->ajaxReturn($data); }
Frontend:
密码找回!
请填入您的邮箱进行密码找回
发送后请注意查收邮箱信息填入验证码中