maven
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.7</version>
</dependency>
yml配置(不知道配置哪里来的话可以去百度一下)
ali:
# 阿里云短信
sms:
accessKeyId: xxx #AccessKey ID
accessKeySecret: xxx #AccessKey Secret
templateCode: xxx #模板
signName: xxx #签名
domain: dysmsapi.aliyuncs.com #短信产品域名
version: 2017-05-25 #版本-固定值
regionId: default #地区-默认即可
配置类
package com.ls.luoshenoa.rosunSms.AliYun.sms;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @program: LuoshenOA
* @description:
* @author: Zeke
* @create: 2023-05-29 09:57
**/
@Configuration
@ConfigurationProperties(prefix = "ali.sms")
public class AliYunConfig {
private String accessKeyId;
private String accessKeySecret;
private String templateCode;
private String signName;
private String domain;
private String regionId;
private String version;
public String getAccessKeyId() {
return accessKeyId;
}
public void setAccessKeyId(String accessKeyId) {
this.accessKeyId = accessKeyId;
}
public String getAccessKeySecret() {
return accessKeySecret;
}
public void setAccessKeySecret(String accessKeySecret) {
this.accessKeySecret = accessKeySecret;
}
public String getTemplateCode() {
return templateCode;
}
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
public String getSignName() {
return signName;
}
public void setSignName(String signName) {
this.signName = signName;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getRegionId() {
return regionId;
}
public void setRegionId(String regionId) {
this.regionId = regionId;
}
}
核心代码
package com.ls.luoshenoa.rosunSms.AliYun.sms;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.ls.luoshenoa.rosunSms.AliYun.util.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author pet.team
* @Description 阿里云短信服务
*/
@Component
public class AliYunSmsService {
private static final Logger log = LoggerFactory.getLogger(AliYunSmsService.class);
@Autowired
private AliYunConfig aliSmsConfig;
/**
* 发送单条短信
* @param phone
* @param code
*/
public String sendSms( String phone, String code ) {
String result = null;
DefaultProfile profile = DefaultProfile.getProfile(aliSmsConfig.getRegionId(), aliSmsConfig.getAccessKeyId()
, aliSmsConfig.getAccessKeySecret());
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
CommonResponse response = null;
request.setSysMethod(MethodType.POST);
request.setSysDomain(aliSmsConfig.getDomain());
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
request.putQueryParameter("RegionId", aliSmsConfig.getRegionId());
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("SignName", aliSmsConfig.getSignName());
request.putQueryParameter("TemplateCode", aliSmsConfig.getTemplateCode());
Map<String,String> map = new HashMap<>();
map.put("code",code);
request.putQueryParameter("TemplateParam", JSON.toJSONString(map));
try {
response = client.getCommonResponse(request);
log.info("阿里云发送短信返回值:{}", response.getData());
// {"Message":"OK","RequestId":"6B5E6B36-DFC0-4859-A9FC-5DEAF04162C8","BizId":"362515768112966744^0","Code":"OK"}
JSONObject jsonObject = JSON.parseObject(response.getData());
if(Constants.Sms.ALI_SMS_RESULT.equals(jsonObject.get(Constants.Sms.ALI_SMS_CODE_KEY))){
result = Constants.Sms.ALI_SMS_RESULT;
}else {
result = jsonObject.get("Message").toString();
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return result;
}
}
测试
@Autowired
AliYunSmsService aliYunSmsService;
@Test
void test(){
String s = aliYunSmsService.sendSms("手机号码", "验证码");
System.out.println(s);
}