万事第一步:
<!-- 阿里云-短信服务SMS -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.8</version>
</dependency>
第二步:
创建短信验证工具类(阿里云有实例):
package com.mhy.projectdemo.utils;
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡖⠒⠒⠤⢄⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀:⠃⠀⠀⡗⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
// ⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
// ⠀⠙⣌⠳ 小马无忧 ⡏⠀⠀⠈⠳⡌⣦⠀⠀⠀
// ⠀⠀⠈⢳⣈⣻ ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
// ⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
// ⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
// ⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
// ⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
// ⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
// ⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
// ⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
// ⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
// ⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽⠀
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.tea.*;
import com.aliyun.dysmsapi20170525.*;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.*;
import com.aliyun.teaopenapi.models.*;
import com.mhy.projectdemo.config.SystemConfig;
/**
* @author Feri
* @date 2021/12/31 10:06
* @description:TODO
*/
public class AliSmsUtils {
private static Client client;
//完成初始化
static {
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(SystemConfig.ALI_KEY)
// 您的AccessKey Secret
.setAccessKeySecret(SystemConfig.ALI_SEC);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
try {
client=new Client(config);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 发送验证码
* @param code 验证码
* @param phone 手机号
* @param temcode 模板code*/
public static boolean sendCode(String temcode,String phone,int code){
//1.准备请求参数
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phone)
.setSignName("来自邢朋辉的短信")
.setTemplateCode(temcode)
.setTemplateParam("{\"code\":"+code+"}");
try {
//2.发送短信,获取响应结果
SendSmsResponse response=client.sendSms(sendSmsRequest);
//3.返回结果
return response.getBody().code.equals("OK");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
第三步:
写系统配置变量(可以不写,不写上面的秘钥记得改,写了就改这文件里面的就行)
public class SystemConfig {
//阿里云账号的key和密钥
public static final String ALI_KEY="LTAI5tKz7sP4xaaRsTuxoTjx";
public static final String ALI_SEC= "mFCyf0QxVmB6kGAacAxdtMqmQwcRIx";
//阿里云短信模板
public static final String ALI_SMS_RCODE="SMS_114390520";//注册
public static final String ALI_SMS_LCODE="SMS_115250125";//登录
public static final String ALI_SMS_FCODE="SMS_181545700";//密码找回
//验证码的长度
public static final int CODE_LEN=6;
}
第四步:
定义一个生成验证码的工具类
package com.feri.sq.utils;
import java.util.Random;
/**
* @author Feri
* @date 2021/12/31 10:20
* @description:TODO
*/
public class NumUtils {
/**
* 随机生成指定位数的数字
*@len验证码的长度
*/
public static int createNum(int len){
Random random=new Random();
//假设len=4 (int)(Math.pow(10,len)-Math.pow(10,len-1))就是10000-1000
//pow就是科学计数法形式的数字
//nextInt方法是从0开始后面括号里的是他的界限
return random.nextInt((int)(Math.pow(10,len)-Math.pow(10,len-1)))
+(int)Math.pow(10,len-1);
}
}
第五步:
测试(在test下)
package com.mhy.projectdemo;
import com.mhy.projectdemo.config.SystemConfig;
import com.mhy.projectdemo.utils.AliSmsUtils;
import com.mhy.projectdemo.utils.NumUtils;
import org.junit.jupiter.api.Test;
public class SmsTest {
@Test
public void t1(){
int code= NumUtils.createNum(6);
System.err.println(code);
AliSmsUtils.sendCode(SystemConfig.ALI_SMS_RCODE,"15839961509",code);
}
}