一,阿里云部分
登录阿里云搜索短信服务进入控制台,进行申请。具体自己研究下申请。
二,Java 代码部分
-
可以点击此链接进入短信接入的文档 点击调试可以生成示例代码(如下图)
-

注:
上面生成的代码太乱,可以使用我下面的代码,整合成短信工具类,将需要的信息改为自己的即可
导入依赖
说明
V1.0 SDK已不再维护,推荐您使用V2.0 SDK。若您使用的是V1.0 SDK,建议升级到V2.0 SDK。
<!-- 阿里云短信SDK 2.0 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>4.1.2</version>
</dependency>
application-dev.yml
#短信服务
sms:
aliyun:
accessKeyId: LTAI5tH7QfxcVhxYT7wH4qi71
accessKeySecret: LD4sxJC1pZaY3ZCIrcrAtS8XGl8jIl1
endpoint: dysmsapi.aliyuncs.com
regionId: cn-hangzhou
SmsAliyunConfig
package com.hfss.coverage.vo.model;
import jakarta.annotation.PostConstruct;
import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
/**
* SmsAliyun
*
* @author Nissy
* @create 2025-07-25-16:18
*/
public class SmsAliyunConfig {
/**
* 短信accessKeyId
*/
@Getter
private static String accessKeyId;
/**
* 短信accessKeySecret
*/
@Getter
private static String accessKeySecret;
/**
* 产品的服务接入点
*/
@Getter
private static String aliyunEndpoint;
/**
* 区域
*/
@Getter
private static String aliyunRegionId;
//非静态注入
@Value("${sms.aliyun.accessKeyId}")
private String keyId;
@Value("${sms.aliyun.accessKeySecret}")
private String keySecret;
@Value("${sms.aliyun.endpoint}")
private String endpoint;
@Value("${sms.aliyun.regionId}")
private String regionId;
@PostConstruct
public void init() {
// 赋值给静态字段
accessKeyId = keyId;
accessKeySecret = keySecret;
aliyunEndpoint = endpoint;
aliyunRegionId = regionId;
}
}
短信工具类SmsUtils
package com.hfss.coverage.utils;
import cn.hutool.json.JSONUtil;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.QuerySendDetailsRequest;
import com.aliyun.dysmsapi20170525.models.QuerySendDetailsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.hfss.coverage.vo.model.SmsAliyunConfig;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
/**
* SmsUtil
*
* @author Nissy
* @create 2025-07-25-15:43
*/
@Slf4j
public class SmsUtils {
/**
* 发送短信
* @param signName 签名
* @param templateCode 模板
* @param phoneNumbers 手机号
* @param templateParam 模板参数
* @return SendSmsResponse
*/
public static SendSmsResponse sendMsg(String signName, String templateCode, String phoneNumbers, Map<String,String> templateParam){
log.info("发送短信开始:{}", phoneNumbers);
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName(signName)
.setTemplateCode(templateCode)
.setPhoneNumbers(phoneNumbers)
.setTemplateParam(JSONUtil.toJsonStr(templateParam));
//创建运行时参数
RuntimeOptions runtime = new RuntimeOptions();
SendSmsResponse resp = null;
//发起请求
try {
Client client = createClient();
resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
log.info("发送短信成功:{}", resp.body.message);
}catch (Exception e){
log.error("发送短信异常:{}", e.getMessage());
}
return resp;
}
/**
* 取单条短信回执
* @param phoneNumber 电话 只支持单条
* @param bizId 回执ID
* @param sendDate 发送时间 yyyyMMdd
* @return QuerySendDetailsResponse
*/
public static QuerySendDetailsResponse sendDetails(String phoneNumber,String bizId,String sendDate){
//请求入参
QuerySendDetailsRequest sendDetailsRequest = new QuerySendDetailsRequest();
sendDetailsRequest.setPhoneNumber(phoneNumber);
sendDetailsRequest.setBizId(bizId);
sendDetailsRequest.setSendDate(sendDate);
//分页信息
sendDetailsRequest.setPageSize(10L);
sendDetailsRequest.setCurrentPage(1L);
//返回参
QuerySendDetailsResponse resp = null;
//发起请求
try {
Client client = createClient();
resp = client.querySendDetails(sendDetailsRequest);
log.info("发送短信成功:{}", resp.body.message);
}catch (Exception e){
log.error("发送短信异常:{}", e.getMessage());
}
return resp;
}
private static Client createClient() throws Exception {
Config config = new Config()
.setAccessKeyId(SmsAliyunConfig.getAccessKeyId())
.setAccessKeySecret(SmsAliyunConfig.getAccessKeySecret());
// endpoint为对应产品的服务接入点
config.regionId = SmsAliyunConfig.getAliyunRegionId();
config.endpoint = SmsAliyunConfig.getAliyunEndpoint();
return new Client(config);
}
}
测试短信发送
@GetMapping("/test")
public AjaxResult test() throws Exception {
SendSmsResponse sendSmsResponse= SmsUtils.sendMsg("阿里云短信测试", "SMS_154950909", "15375560529", null);
return AjaxResult.success();
}
1368

被折叠的 条评论
为什么被折叠?



