不废话,上代码
导入依赖
<properties>
<java.version>11</java.version>
<aliyun.sms.version>2.0.23</aliyun.sms.version>
</properties>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>${aliyun.sms.version}</version>
</dependency>
工具类
package com.codingfuture.sms.util;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.tea.TeaException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* @PROJECT_NAME: SMS
* @DATE: 2023/3/22
* @AUTHOR: Petrel
* @DESCRIPTION:
*/
@Component
public class SmsUtils {
@Value("${aliyun.sms.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.sms.accessKeySecret}")
private String accessKeySecret;
@Value("${aliyun.sms.signName}")
private String signName ;
@Value("${aliyun.sms.templateCode}")
private String templateCode;
/***
* @return java.lang.String
* @Author Petrel
* @Date 17:40 2023/3/22
* @Param [phoneNumbers, templateParam]
* @Description // controller调用
*/
public String send (String phoneNumbers,String templateParam ) throws Exception {
return sendMessage(accessKeyId, accessKeySecret, phoneNumbers, signName, templateCode, templateParam);
}
/***
* @return java.lang.String
* @Author Petrel
* @Date 17:40 2023/3/22
* @Param [accessKeyId, accessKeySecret, phoneNumbers, signName, templateCode, templateParam]
* @Description //sendMessage
*/
public static String sendMessage (String accessKeyId,
String accessKeySecret,
String phoneNumbers,
String signName,
String templateCode,
String templateParam) throws Exception {
// 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
com.aliyun.dysmsapi20170525.Client client = SmsUtils.createClient(accessKeyId, accessKeySecret);
com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
.setPhoneNumbers(phoneNumbers)
.setSignName(signName)
.setTemplateCode(templateCode)
.setTemplateParam(templateParam);
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
System.out.println(sendSmsResponse.getBody().getCode());
return sendSmsResponse.getBody().getCode();
} catch (TeaException error) {
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
return null;
}
/***
* @return com.aliyun.dysmsapi20170525.Client
* @Author Petrel
* @Date 16:28 2023/3/22
* @Param [accessKeyId, accessKeySecret]
* @Description // createClient
*/
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 必填,您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
}
配置文件application.yml (properties中文会有乱码)
aliyun:
sms:
accessKeyId : 自己的
accessKeySecret : 自己的
signName : 自己的
templateCode : 自己的
测试代码
@RestController
public class SmSController {
@Autowired
private SmsUtils smsUtils;
@GetMapping("/sms")
public String smsTest () throws Exception {
String phoneNumbers = "12345678910";
String name = "xx同学";
String templateParam = String.format("{\"name\":\"%s\"}", name);
String result = smsUtils.send(phoneNumbers,templateParam);
return result.equals("OK") ? "发送成功":"发送失败";
}
}