目的是用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: 你申请的签名
到此短信单发服务就完成了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)