阿里云发送短信验证码

发布时间 2023-12-21 14:28:37作者: xiaobaibao

1.2017-05-25版本的api文档:短信服务API概览及参考_短信服务(SMS)-阿里云帮助中心 (aliyun.com)

2.代码及解析:

// 发送短信的方法
public static boolean sendSms(String phone) {
// 用于访问阿里云服务
DefaultProfile profile = DefaultProfile.getProfile(
"cn-beijing", // 地域ID
SNOWY_SMS_ALIYUN_ACCESS_KEY_ID_KEY, // 您的AccessKey ID
SNOWY_SMS_ALIYUN_ACCESS_KEY_SECRET_KEY // 您的AccessKey Secret
);
// 使用 DefaultProfile 对象创建 DefaultAcsClient 对象,代表一个短信服务客户端
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
// 以下4行代码表示的是:发送 POST 请求给相应的服务器地址,请求的 API 是 2017-05-25 版本的 SendSms 方法
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com"); // 服务地址
request.setSysVersion("2017-05-25"); // 请求的API版本号
request.setSysAction("SendSms"); // 设置了请求操作的名称:"SendSms"是阿里云短信服务API中的一个操作名称,它表示发送短信的操作。根据不同的阿里云服务,操作名称会有所不同,需根据具体的服务API文档来设置。
//request.putQueryParameter("RegionId", "cn-hangzhou"); // 如果要使用的话必须与上面的保持一致
// 以下4行代码是请求所需的参数:手机号、签名名称(需要在阿里云通过审核)、短信模板ID(需要在阿里云创建并通过审核)、验证码(后端自己生成)
request.putQueryParameter("PhoneNumbers", phone); // 接收验证码的手机号
request.putQueryParameter("SignName", SNOWY_SMS_ALIYUN_DEFAULT_SIGN_NAME_KEY); // 短信签名名称,需要在阿里云上通过审核
request.putQueryParameter("TemplateCode", SNOWY_SMS_ALIYUN_END_POINT_KEY); // 短信模板ID,需要在阿里云上创建并审核通过
// 生成发给用户的短信验证码
String code = generateCode();
System.out.println("短信验证码:"+code);
request.putQueryParameter("TemplateParam", "{\"code\":\""+ code +"\"}"); // 短信模板参数,这里使用JSON格式传递,随机生成即可
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData()); // 可以在控制台输出调试信息
return true;
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return false;
}

3.生成验证码的方法:

// 随机生成6位验证码
public static String generateCode() {
return String.valueOf((int)((Math.random()*9+1)*100000));
}