java实现QQ邮箱发送验证码
首先,需要设置一个邮箱服务器,由该邮箱向注册用户发送验证码
1、进入QQ邮箱界面
2、点击设置
3、切换到“账户”
4、往下滑,看到以下部分,将图中红色框内的两个选项开启,在这过程中需要短信验证
(SMTP服务用于发送邮件)
5、开启后会获得对应的密码验证器(授权码,一串很长的字符,记得用文件存起来),完成,该邮箱就可以作为邮箱服务器发送邮件了!
Java代码邮箱参数后端设置部分
CommconsEmail.java。
import java.util.Date;
import org.apache.commons.mail.SimpleEmail;
public class CommonsEmail {
public static boolean sendTextMail(String strMail, String strTitle, String strText) throws Exception {
boolean bret = true;
SimpleEmail mail = new SimpleEmail();
// 设置邮箱服务器信息
mail.setSslSmtpPort("465");
mail.setHostName("smtp.qq.com");
// 设置密码验证器
mail.setAuthentication("邮箱", "密码验证器");
// 设置邮件发送者
mail.setFrom("邮箱");
// 设置邮件接收者
mail.addTo(strMail);
// 设置邮件编码
mail.setCharset("UTF-8");
// 设置邮件主题
mail.setSubject(strTitle);
// 设置邮件内容
mail.setMsg(strText);
// 设置邮件发送时间
mail.setSentDate(new Date());
// 发送邮件
mail.send();
bret = true;
return bret;
}
}
后端跳转Controller
UserController.java
@Controller
@RequestMapping("userController")
public class UserController {
// 发送邮件
@RequestMapping("/sendemail")
@ResponseBody
public void sendemail(String email, HttpServletRequest req, HttpServletResponse resp, )
throws Exception {
System.out.println("---------");
int pass = (int) ((Math.random() * 9 + 1) * 100000);//随机生成验证码
String strText = "【TH】您的验证码是 " + pass + ",用于TH网站验证,请勿将验证码透露给他人,如非本人操作,请立即访问www.baidu.com 查询";
CommonsEmail.sendTextMail(email, "TH网站邮件认证", strText);
resp.getWriter().write(String.valueOf(pass));//前端ajax接收
}
}
test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>获取验证码</title>
</head>
<body>
<form action="#" method="post">
<label>用户邮箱:</label>
<input id="email" type="text" placeholder="输入邮箱">
<input type="button" value="获取验证码" onclick="getCode();">
<br>
<label>获取到的验证码:</label>
<input id="code" type="text" >
</form>
<script type="text/javascript" src="js/jquery.min.js" ></script>
<script type="text/javascript">
function getCode(){
var email = $("#email").val();
$.ajax({
url:"userController/sendemail",
type:"POST",
anync:false,
cache:false,
data:{
email:email//与后端请求方法sendemail()的参数名称一致,否则后端接收不到email参数
},
dataType:"json",
success:function(data){
if(data!=null){
console.log(data);
$("#code").val(data);
}else{
alert("获取验证码失败!");
}
}
});
}
</script>
</body>
</html>
这样,就可以实现随机产生验证码,发送给对应的邮箱了。