java
<!-- 适配JDK8 的短信服务接口 -->
<!-- 阿里云核心库 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.28</version>
</dependency>
<!-- 短信服务 SDK -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>2.1.0</version>
</dependency>
<!-- 其他依赖(如 JSON 解析) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
java
package com.tools;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.profile.DefaultProfile;
public class AliyunDuanxinUtil {
public static void main(String[] args) {
// TODO Auto-generated method stub
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"your-access-key-id", // AccessKey ID
"your-access-key-secret" // Secret 密钥
);
IAcsClient client = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers("15937443028"); //本人
//设置短信签名,即短信开头的【】中的内容(如 【阿里云】)。
//注意事项:签名需在 阿里云短信控制台 提前申请并审核通过。
request.setSignName("短信签名");
//设置短信模板 ID。
// 模板需在阿里云控制台申请,审核通过后获取唯一 ID(如 SMS_330320963)。
//模板内容示例: 您的验证码是${code},5分钟内有效,请勿泄露!
request.setTemplateCode("SMS_501775581"); //短信模板 ID
//${code} 是模板变量,需通过 setTemplateParam 动态填充。
/*
* 敬爱的${name},诚邀您到访2024中国机器人博览会未来之城,${url} 预祝您观展愉快! 拒收请回复R
*/
// request.setTemplateParam("{\"name\":\"张三丰\",\"url\":\"8697\"}");
/*
* 亲爱的博览会贵宾${name},您的邀请函已生成,欢迎您尊贵体验。拒收请回复R
*/
String userName="小亮";
request.setTemplateParam("{\"name\":\""+userName+"\"}");
//例如: 尊敬的${name},您的订单${orderId}已发货,物流单号:${expressNo}。
//对应的 request.setTemplateParam("{\"name\":\"张三\", \"orderId\":\"12345\", \"expressNo\":\"SF123456789\"}");
try {
// client.getAcsResponse(request);
// System.out.println("短信发送成功!");
SendSmsResponse response = client.getAcsResponse(request);
System.out.println("短信发送状态:");
System.out.println("RequestId: " + response.getRequestId());
System.out.println("状态码: " + response.getCode());
System.out.println("状态信息: " + response.getMessage());
if("OK".equals(response.getCode())) {
System.out.println("短信已提交到运营商");
} else {
System.out.println("发送失败,请参考:");
System.out.println("https://help.aliyun.com/document_detail/101346.html");
}
} catch (Exception e) {
e.printStackTrace();
}
}
//重复使用 短信接口调用的函数
public static String callDuanxin(String userName,String userPhone,String href) {
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"LTAI5tPL6uk1oxeEKrB7FAcU1", // AccessKey ID
"RQuaBD7DGCra743FkBQLBBo8kue3lS1" // Secret 密钥
);
IAcsClient client = new DefaultAcsClient(profile);
SendSmsRequest request = new SendSmsRequest();
// request.setPhoneNumbers("15937443024");
request.setPhoneNumbers(userPhone);
//设置短信签名,即短信开头的【】中的内容(如 【阿里云】)。
//注意事项:签名需在 阿里云短信控制台 提前申请并审核通过。
request.setSignName("抛物线");
//设置短信模板 ID。
// 模板需在阿里云控制台申请,审核通过后获取唯一 ID(如 SMS_330320963)。
//模板内容示例: 您的验证码是${code},5分钟内有效,请勿泄露!
request.setTemplateCode("SMS_501775581"); //设置短信模板 ID
//${code} 是模板变量,需通过 setTemplateParam 动态填充。
//request.setTemplateParam("{\"code\":\"1234\"}");
request.setTemplateParam("{\"name\":\""+userName+"\"}");
//例如: 尊敬的${name},您的订单${orderId}已发货,物流单号:${expressNo}。
//对应的 request.setTemplateParam("{\"name\":\"张三\", \"orderId\":\"12345\", \"expressNo\":\"SF123456789\"}");
try {
client.getAcsResponse(request);
System.out.println("短信发送成功!");
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}