目的是用Java实现短信单发功能,可以是验证码或者短信通知,我这里使用阿里云短信服务。
开发前要做一些准备工作,首先注册一个阿里云账号,实名认证之类的就不细说了,然后看一下api文档,文档指引写的很清楚,先按照文档一步步操作到签名和模板创建完成,并设置访问权限,这样就可以拿到我们需要的几个参数(RAM用户id和key,签名、模板)了。
接下来看下代码,先打开 OpenAPI开发者门户体验一下如何调用,如下图,填上几个必要的参数(在前面的准备工作拿到,这里测试不用填RAM用户id和key),点击”发起调用“,成功发送短信就说明参数正确。可以看到在左边填上参数后,右边代码对应set参数,明白了怎么入参调用,我们开始来写自己的代码(其实就是搬运代码emmm)。
先引入sdk依赖,鼠标指到sdk依赖信息那里就可以看到依赖,把它复制到你的pom里。
再然后就是复制代码,做一些修改就可以了,下面是我的代码:
1.主要代码
package com.example.util;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Random;
@Component
public class MessageUtil {
@Value("${messageService.accessKeyId}")
private String accessKeyId;
@Value("${messageService.accessKeySecret}")
private String accessKeySecret;
@Value("${messageService.templateCode1}")
private String templateCode;
@Value("${messageService.signName}")
private String signName;
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new Client(config);
}
public void sendVerifyCode(String phoneNumber, String templateParam) throws Exception {
Client client = MessageUtil.createClient(accessKeyId, accessKeySecret);
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(phoneNumber)
.setSignName(signName)
.setTemplateCode(templateCode)
.setTemplateParam("{"code":"+templateParam+"}");
// 复制代码运行请自行打印 API 的返回值
client.sendSms(sendSmsRequest);
}
}
2.写一个测试类调用
package com.example;
import com.example.util.MessageUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class MyTest {
@Autowired
MessageUtil messageUtil;
@Test
public void messageTest() throws Exception {
messageUtil.sendVerifyCode("18178605372", "您的验证码为:8888");
}
}
在application.yml 中配置参数:前面准备的RAM用户id和key在这用到
messageService: #阿里云RAM用户id accessKeyId: 你创建RAM用户id #阿里云RAM用户AccessKey accessKeySecret: 你的RAM用户AccessKey #短信验证码模板1 templateCode1: 你申请的模板code #短信签名 signName: 你申请的签名
到此短信单发服务就完成了。



