1 、maven 项目pom文件 引入阿里库
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.0</version>
</dependency>
2、工具类
官方参考demo https://api.aliyun.com/?spm=a2c4g.11186623.2.15.49a960e2ddMryn#/?product=Dysmsapi&lang=JAVA
参数说明 https://help.aliyun.com/document_detail/101414.html
错误码说明 https://helpcdn.aliyun.com/document_detail/101346.html
package com.runxing.admin.utils;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.runxing.common.constants.SMSCodeEnum;
import java.util.Map;
/**
pom.xml
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.3</version>
</dependency>
短信发送工具类
*/
public class SendSmsUtil {
//常量参数最好配置到配置文件中
public static String accessKeyId = "LTAIhek8B1N";
public static String accessSecret = "mMVuJSOcfH3f83ozTo9";
public static String signName = "漫画测试签名名称";//签名管理里的签名名称
public static boolean send(String PhoneNumbers,String templateCode,String templateParam) {
DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessSecret);
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("PhoneNumbers", PhoneNumbers);
request.putQueryParameter("SignName", signName);
request.putQueryParameter("TemplateCode", templateCode);
request.putQueryParameter("TemplateParam", templateParam);
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
Gson GSON = new Gson();
Map<String,String> map = GSON.fromJson(response.getData(),new TypeToken<Map<String,String>>() {
}.getType());
if(map.get("Code").equals("OK")){
return true;
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return false;
}
public static void main(String[] args) {
String PhoneNumbers = "13776670000";//多个用逗号分割13776670000,13776670000
String templateCode = SMSCodeEnum.INFO_UPDATE.getCode();//短信模板code
String templateParam = "{\"code\":\"2155\"}";//"{\"name\":\"明城墙折扣票\",\"code\":\"2155\",\"time\":\"2019-09-10\"}";//短信模板内参数
boolean sendStatus = SendSmsUtil.send(PhoneNumbers,templateCode,templateParam);
if(sendStatus){
System.out.println("短信发送成功");
}
}
}
package com.runxing.common.constants;
import java.util.HashMap;
import java.util.Map;
/**
* 短信模板枚举类
* 各模板code需要申请
*/
public enum SMSCodeEnum {
REFUND("SMS_164665858","订单退款成功"),
CHECK_SUCCESS("SMS_164680821","核验出票成功"),//订单消费成功
BUY_SUCCESS("SMS_164665851","订单购买成功"),
INFO_UPDATE("SMS_160540030","信息变更验证码(测试用)");
private static Map<String, SMSCodeEnum> map = new HashMap<>();
static {
SMSCodeEnum[] values = values();
for (SMSCodeEnum channel : values) {
map.put(channel.code, channel);
}
}
public static SMSCodeEnum findByCode(String code) {
return map.get(code);
}
private String code;
private String status;
public String getCode() {
return code;
}
public String getStatus() {
return status;
}
SMSCodeEnum(String code, String status) {
this.code = code;
this.status = status;
}
}