接入阿里云短信服务,阿里云官网提供对应代码,可以自己看:阿里云短信API概览
注册一个账号进行开通,开通不需要钱。现在个人无法进行申请短信签名与模板进行测试了,需要你有备案的网站才可以进行申请。
为保证账号安全,短信需要使用的属性我将放在 yml 文件里面进行引用。
1. 老版 JAVA_SDK 短信发送服务整合
先添加依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
上代码
/**
* 描述:
* java-to-learn-阿里云短信服务
*
* @Author jiandandegfs
* @create 2021-06-09 22:14
*/
@RequestMapping("/aliyun/sms")
@RestController
@Slf4j //lombok依赖中的日志记录
public class SmsController {
//手机号正则表达式
Pattern compile = Pattern.compile("^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\\d{8}$");
//阿里云使用账号
@Value("${aliyun.yanxin.accessKeyId}")
private String ACCESS_KEY_ID;
//阿里云使用密码
@Value("${aliyun.yx.accessKeySecret}")
private String ACCESS_KEY_SECRET;
@Value("${aliyun.yx.sms.sign.name1}")
private String SIGN_NAME;
@Value("${aliyun.yx.sms.template.code1}")
private String TEMPLATE_CODE;
//java短信调用sdk
@GetMapping("/java_sdk/{phone}")
public void JavaSdk(@PathVariable(value = "phone") String phone) {
log.info("JavaSdk is start");
Matcher matcher = compile.matcher(phone);
boolean b = matcher.find();
if (!b) {
log.error("the {} is error phone number", phone);
return;
}
DefaultProfile profile = DefaultProfile.getProfile("cn-qingdao", ACCESS_KEY_ID, ACCESS_KEY_SECRET);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setSysMethod(MethodType.POST);
request.setSysDomain("dysmsapi.aliyuncs.com");
request.setSysVersion("2017-05-25");
request.setSysAction("SendSms");
//接收短信的手机号码
request.putQueryParameter("PhoneNumbers", phone);
//短信签名名称
request.putQueryParameter("SignName", SIGN_NAME);
//短信模板ID
request.putQueryParameter("TemplateCode", TEMPLATE_CODE);
//短信模板变量对应的实际值-json格式
request.putQueryParameter("TemplateParam", "{\"code\":\"" + get_random_number() + "\"}");
//出现问题:{"RequestId":"70987AA9-4151-4DCA-A81C-54037F3C33B5","Message":"模板不合法(不存在或被拉黑)","Code":"isv.SMS_TEMPLATE_ILLEGAL"}
try {
CommonResponse response = client.getCommonResponse(request)