前提:我将验证码存入了map集合,进行验证。
private static HashMap<String, Integer> emailMap = new HashMap<>();
一、通过邮箱发送验证码:
1、准备条件:引入hutool依赖,
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
<!--发送邮件-->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
2、准备一个阿里云邮箱。
注册链接
3、手写代码。
public Integer sendCode(String email) { //参数为你接受邮件的邮箱地址
//发送email验证码
MailAccount account = new MailAccount();
account.setHost("smtp.aliyun.com"); //阿里云的邮箱服务器地址
account.setPort(465); //端口号
account.setAuth(true);
account.setSslEnable(true);
account.setUser("你自己的阿里云邮箱");
account.setPass("密码");
account.setFrom("你自己的阿里云邮箱");
int code = RandomUtil.randomInt(1000, 10000);
emailMap.put("email", code);
MailUtil.send(account, email, "测试", "邮件来自scl测试:" + code, false);
return 0;
}
二、手机号发送验证码
1、开通阿里云的短信功能。
链接: 【短信验证码-快速自定义签名】三网短信接口-短信-数字藏品短信-三网短信接口验证码-短信验证码-短信【最新版】_商业智能_电商_金融-云市场-阿里云
2、查找你自己的AppCode
3、编写代码(这里也用到了hutool工具,你需要引入其架包,上边邮件里边有架包)
/**
* 手机验证码
*
* @param tel
* @return
*/
public Integer sendTelCode(String tel) {
String url = "https://dfsns.market.alicloudapi.com/data/send_sms";
String appcode = "你自己的appcode";
int code = RandomUtil.randomInt(1000, 10000); //验证码
emailMap.put("tel", code);
String result = HttpRequest.post(url)
.header("Authorization", "APPCODE " + appcode)//头信息,多个头信息多次调用此方法即可
.body("content=code:" + code + "&template_id=TPL_0000&phone_number=" + tel)
.execute().body();
JSONObject object = JSONUtil.parseObj(result);
if (!object.get("status").equals("OK")) {
log.error("发送验证码错误:{}", object.get("reason"));
throw new BizException(404, "发送验证码错误");
}
return 0;
}