pom.xml
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.0</version>
</dependency>
nacos配置自定义参数
aliyun:
sms:
access-key-id: ****
access-key-secret: ****
sign-name: ****
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.sms")
public class AliyunSMSProperties {
@ApiModelProperty("accessKeyId")
private String accessKeyId;
@ApiModelProperty("accessKeySecret")
private String accessKeySecret;
@ApiModelProperty("短信签名")
private String signName;
}
配置自定义常量
public class SmsConst {
/**
* DOMAIN API地址
*/
public final static String DOMAIN = "dysmsapi.aliyuncs.com";
/**
* REGION_ID 服务器大区
*/
public final static String REGION_ID = "cn-hangzhou";
/**
* VERSION 系统版本
*/
public final static String VERSION = "2017-05-25";
/**
* ACTION API接口名必须为SendSms
*/
public static final String ACTION = "SendSms";
}
配置入参实体类
@Setter
@Getter
@ToString
public class SmsVo {
@ApiModelProperty(value = "手机号码")
private String phoneNumber;
@ApiModelProperty(value = "模板code", example = "SMS_70505127")
private String templateCode;
@ApiModelProperty(value = "模板参数")
private Map<String, String> parameters;
@ApiModelProperty(value = "消息")
private String messages;
}
sevice实现
public class AliyunSMSUtil {
private static AliyunSMSProperties aliyunSMSProperties = SpringContextHolder.getBean(AliyunSMSProperties.class);
public static R sendSMS(SmsVo smsVo) {
if (smsVo == null) {
return R.failed(MessageUtils.message("upms.validation.msg0023"));
}
// accessKeyId
String accessKeyId = aliyunSMSProperties.getAccessKeyId();
// accessKeySecret
String accessKeySecret = aliyunSMSProperties.getAccessKeySecret();
// 短信签名
String signName = aliyunSMSProperties.getSignName();
// 创建profile对象
DefaultProfile profile = DefaultProfile.getProfile(SmsConst.REGION_ID, accessKeyId, accessKeySecret);
// 创建client对象
IAcsClient client = new DefaultAcsClient(profile);
// 创建request对象
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain(SmsConst.DOMAIN);
request.setVersion(SmsConst.VERSION);
request.setAction(SmsConst.ACTION);
request.putQueryParameter("RegionId", SmsConst.REGION_ID);
request.putQueryParameter("PhoneNumbers", smsVo.getPhoneNumber());
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", smsVo.getTemplateCode());
request.putQueryParameter("TemplateParam", JsonUtil.toJson(smsVo.getParameters()));
try {
log.info(String.format("Send sms: phone - %s, template code - %s, params - %s",
smsVo.getPhoneNumber(), smsVo.getTemplateCode(),
JsonUtil.toJson(smsVo.getParameters())));
CommonResponse response = client.getCommonResponse(request);
log.info(String.format("Response: phone - %s, data - %s", smsVo.getPhoneNumber(),
response.getData()));
return R.ok(response.getData());
} catch (ServerException e) {
log.error("Send SMS ServerException:", e);
} catch (ClientException e) {
log.error("Send SMS ClientException:", e);
}
return R.failed(MessageUtils.message("upms.validation.msg0024"));
}
}
使用阿里云SDK发送短信服务
该博客介绍了如何配置和使用阿里云SDK发送短信服务。首先在`pom.xml`中引入了`aliyun-java-sdk-core`依赖,然后在配置文件中设置了阿里云的access key ID、access key secret和短信签名。接着,定义了配置类`AliyunSMSProperties`来读取这些配置,并创建了常量类`SmsConst`存储API的相关参数。入参实体类`SmsVo`包含了发送短信所需的手机号、模板代码和参数。最后,在`AliyunSMSUtil`服务类中实现了发送短信的方法,通过阿里云SDK调用SendSms API发送短信。
1211

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



