项目描述
上传时间
浏览人数
1.注册阿里云账户,配置短信模板
本次学习使用的是诚筑说账号的已有模板,大家可根据下方链接学习如何配置模板
https://developer.aliyun.com/ask/217770?spm=a2c6h.14164896.0.0.550d6361IpBWDQ
注:引用阿里云官方文档
2.已有模板样式及内容
3.阿里云短信服务文档
参数:
(1) PhoneNumbers:信息接受人电话号
(2) SignName:短信签名
(3) TemplateCode:模板编号
(4) TemplateParam:短信内变量(json字符串格式)
4.在pom.xml文件中添加阿里云短信服务依赖
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.1</version>
</dependency>
5.将阿里云示例的函数封装到自己的项目
(1).阿里云示例函数
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.dysmsapi20170525.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 com.aliyun.dysmsapi20170525.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
com.aliyun.dysmsapi20170525.Client client = Sample.createClient("accessKeyId", "accessKeySecret");
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(PhoneNumbers)
.setSignName(SignName)
.setTemplateCode(TemplateCode)
.setTemplateParam(TemplateParam);
// 复制代码运行请自行打印 API 的返回值
client.sendSms(sendSmsRequest);
}
}
第一个函数:函数内创建了一个实例,声明了accessKeyId,accessKeySecret和endpoint
第二个函数:实现发送短信功能
参数:
accessKeyId和accessKeySecret:购买服务后,阿里云分配ID及密钥
Endpoint:访问域名(阿里云短信服务的域名,固定数据)
(2).封装到自己的项目
package com.wayne.test.utils;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.models.*;
public class SMSTools {
/**
* 使用AK&SK初始化账号Client
*
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.dysmsapi20170525.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 com.aliyun.dysmsapi20170525.Client(config);
}
public static SendSmsResponse sendSms(String PhoneNumbers,String TemplateCode,String TemplateParam) throws Exception {
com.aliyun.dysmsapi20170525.Client client = SMSTools.createClient("accessKeyId", "accessKeySecret");
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers(PhoneNumbers)
.setSignName("诚筑说")
.setTemplateCode(TemplateCode)
.setTemplateParam(TemplateParam);
// 复制代码运行请自行打印 API 的返回值
return client.sendSms(sendSmsRequest);
}
}
第一个函数:不需要修改,按照阿里云提供即可
第二个函数:阿里云提供的函数为main函数,这里需要我们封装成静态函数
注: 1/返回值类型为SendSmsResponse
2/accessKeyId和accessKeySecret可以直接在函数内添参数.此处因账号信息不能外泄,固以变量名代替
3/SignName也可直接写固定数据
(3).调用封装好的函数
@GetMapping("sendSMS")
public JsonMsgPojo sendSms(String PhoneNumbers,String TemplateCode,String name,String num,String days) throws Exception {
String TemplateParam = "{\"name\":\""+name+"\",\"num\":\""+num+"\",\"days\":\""+days+"\"}";
SendSmsResponse sr = SMSTools.sendSms(PhoneNumbers,TemplateCode,TemplateParam);
return new JsonMsgPojo(true,"ok!",sr);
}
TemplateParam:要求为json字符串格式,这里需要我们将模板内的参数拼接成json字符串格式
(4).测试接口
成功发送并接收到信息