万事第一步:
<!-- 阿里云-短信服务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 {@Testpublic void t1(){int code= NumUtils.createNum(6);System.err.println(code);AliSmsUtils.sendCode(SystemConfig.ALI_SMS_RCODE,"15839961509",code);}}
