公司内部项目,由于使用第三方服务发送手机验证码需要一定的费用,为了节省资金选择了通过email邮箱发送验证码来进行注册和忘记密码,废话我就不多说了,直接上代码
pom依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.5</version>
</dependency>
pom依赖搞定后来写个发送邮件的工具类
代码如下:
package www.lzs.util;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EmailUtil {
public static void send_email(String to,String yzm) {
// 发件人电子邮箱
String from = "******@qq.com";
// 指定发送邮件的主机为 smtp.qq.com
String host = "smtp.qq.com"; //QQ 邮件服务器
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");
// 获取默认session对象
Session session = Session.getInstance(properties, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("*****@qq.com", "****");
//第一个参数是发者的邮箱 第二个参数是你的授权码 这一步我已经改过不会出现错误
}});
try{
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段
message.setFrom(new InternetAddress(to));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: 头部头字段
message.setSubject("这是一个测试邮件");
// 设置消息体
message.setText("验证码是:"+yzm+"。此邮件无需回复!!!");
// 发送消息
Transport.send(message);
System.out.println("发送成功");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
接下来我们到controller中去看一看(手动滑稽)
不是太会总结,还是直接来代码的舒服:
package www.lzs.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import www.lzs.service.Forgot_PasswordService;
@Controller
@CrossOrigin
public class Forgot_PasswordController {
private Map<Object, Object> map=new HashMap<>();
@Autowired
private Forgot_PasswordService fService;
@RequestMapping(value="/****")
@ResponseBody
public Object updatePasswordByEmail(String newPassword,String email,String password) {
try {
int r = fService.modifyPasswordByEmail(email, newPassword);
if(r>0) {
map.put("success", true);
map.put("msg", "重置成功");
}else {
map.put("success", false);
map.put("msg", "重置失败");
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}
后台有了那么前台怎么整,还是来代码吧
getCode(){//发送验证码
var re = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
console.log(re.test(vm.email));
console.log(vm.email!=null);
if(vm.email==null || vm.email==""){
layer.msg("邮箱不能为空");
}else if(!re.test(vm.email)){
layer.msg("邮箱格式不正确");
}else{
vm.randomNum = Math.random().toString().slice(-6);
console.log(vm.randomNum);
var TIME_COUNT = 60;
if (!vm.timer) {//发送验证码后来个60秒的倒计时并禁用按钮
vm.count = TIME_COUNT;
vm.show = false;
vm.timer = setInterval(() => {
if (vm.count > 0 && vm.count <= TIME_COUNT) {
vm.count--;
} else {
vm.show = true;
clearInterval(vm.timer);
vm.timer = null;
}
}, 1000);
$.ajax({
url: "******",//你的url
dataType:"json",
data: {
to:vm.email,//要发送验证码的邮箱
yzm:vm.randomNum//随机生成的验证码
},
success:function(res) {
if(res.success){
layer.msg(res.msg);
} else {
layer.msg(res.msg);
}
}
});
}
}
}
<div >
<input style="width:240px" placeholder="请输入找回密码的邮箱" v-model="email" type="text" lay-verify="required">
<button v-show="show" class="layui-btn layui-btn-warm layui-btn-radius" @click="getCode">获取验证码</button>
<hr class="hr15">
<span v-show="!show" class="count">请在{{count}}秒后重试</span>
<hr class="hr15">
<input lay-verify="required" v-model="yzm" placeholder="验证码" type="text">
<hr class="hr15">
<input value="下一步" v-on:click="sendEmail" style="width:100%;" type="button">
<hr class="hr20">
</div>
ok到此结束了,才疏学浅只是将每天get到的新技能记录下来以便后期查阅,水平有限可能在大神眼里写的很烂,还望轻喷。
如果按照步骤不能成功运行,请留言,我每天都会登录博客会在第一时间内回复,愿天下所有程序员早日修成正果,成为大神,欢迎评论交流!!!