阿里云短信代码示例:
引入SDK依赖:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<!-- 当前最新版本 -->
<version>1.3.2</version>
</dependency>
发送短信:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sms.model.v20170525.SendSmsRequest;
import com.aliyuncs.sms.model.v20170525.SendSmsResponse;
public class SmsUtil {
public static void main(String[] args) {
String accessKeyId = "your_access_key_id"; // 阿里云AccessKeyId
String accessKeySecret = "your_access_key_secret"; // 阿里云AccessKeySecret
String mobile = "13888888888"; // 接收短信的手机号码
String signName = "短信签名"; // 短信签名
String templateCode = "短信模板Code"; // 短信模板Code
String templateParam = "{"code":"123456"}"; // 短信模板中的参数,以json格式传递
try {
SendSmsResponse response = sendSms(accessKeyId, accessKeySecret, mobile, signName, templateCode, templateParam);
System.out.println("短信发送结果:" + response.getCode());
} catch (ClientException e) {
e.printStackTrace();
}
}
/**
* 发送短信
*
* @param accessKeyId 阿里云AccessKeyId
* @param accessKeySecret 阿里云AccessKeySecret
* @param mobile 接收短信的手机号码
* @param signName 短信签名
* @param templateCode 短信模板Code
* @param templateParam 短信模板中的参数,以json格式传递
* @return SendSmsResponse
* @throws ClientException 阿里云SDK异常
*/
public static SendSmsResponse sendSms(String accessKeyId, String accessKeySecret, String mobile, String signName, String templateCode, String templateParam) throws ClientException {
// 创建DefaultAcsClient实例并初始化
IAcsClient acsClient = createDefaultAcsClient(accessKeyId, accessKeySecret);
// 创建发送短信的请求
SendSmsRequest request = createSendSmsRequest(mobile, signName, templateCode, templateParam);
// 发送短信并获取响应
SendSmsResponse response;
try {
response = acsClient.getAcsResponse(request);
} catch (ServerException e) {
throw new ClientException(e.getMessage(), e.getErrCode(), e.getRequestId());
} catch (ClientException e) {
throw e;
}
return response;
}
/**
* 创建DefaultAcsClient实例并初始化
*
* @param accessKeyId 阿里云AccessKeyId
* @param accessKeySecret 阿里云AccessKeySecret
* @return DefaultAcsClient
*/
private static IAcsClient createDefaultAcsClient(String accessKeyId, String accessKeySecret) {
// 设置RegionId,根据实际情况填写
String regionId = "cn-hangzhou";
// 初始化Profile
IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
// 创建DefaultAcsClient实例
return new DefaultAcsClient(profile);
}
/**
* 创建发送短信的请求
*
* @param mobile 接收短信的手机号码
* @param signName 短信签名
* @param templateCode 短信模板Code
* @param templateParam 短信模板中的参数,以json格式传递
* @return SendSmsRequest
*/
private static SendSmsRequest createSendSmsRequest(String mobile, String signName, String templateCode, String templateParam) {
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(mobile); // 设置接收短信的手机号码
request.setSignName(signName); // 设置短信签名
request.setTemplateCode(templateCode); // 设置短信模板Code
request.setTemplateParam(templateParam); // 设置短信模板中的参数
return request;
}
}
以上代码示例可以基于阿里云SDK进行短信发送,你需要替换其中的accessKeyId
、accessKeySecret
、mobile
、signName
、templateCode
和templateParam
为你自己的实际值。此外,还需要确保你已加入阿里云短信服务,并创建了短信签名和短信模板。
以下是一个简单的示例代码,用于发送短信到指定的手机号码:
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sms.model.v20170525.SendSmsRequest;
import com.aliyuncs.sms.model.v20170525.SendSmsResponse;
public class AliyunSmsExample {
public static void main(String[] args) {
String accessKeyId = "your_access_key_id";
String accessKeySecret = "your_access_key_secret";
String signName = "your_sign_name";
String templateCode = "your_template_code";
String phoneNumber = "your_phone_number";
// 设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
// 初始化AcsClient, 暂不支持region化
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
try {
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");
} catch (ClientException e) {
e.printStackTrace();
}
DefaultAcsClient client = new DefaultAcsClient(profile);
// 组装请求对象
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(phoneNumber);
request.setSignName(signName);
request.setTemplateCode(templateCode);
// 生成验证码
String verifyCode = generateVerifyCode();
// 设置短信模板参数
request.setTemplateParam("{"code":"" + verifyCode + ""}");
// 发送短信
try {
SendSmsResponse response = client.getAcsResponse(request);
if (response.getCode() != null && response.getCode().equals("OK")) {
System.out.println("短信发送成功");
} else {
System.out.println("短信发送失败,错误码:" + response.getCode() + ",错误信息:" + response.getMessage());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
// 生成四位验证码
private static String generateVerifyCode() {
return String.valueOf((int) ((Math.random() * 9 + 1) * 1000));
}
}
请注意,上述代码中的 your_access_key_id
、your_access_key_secret
、your_sign_name
、your_template_code
和 your_phone_number
分别需要替换为您自己的阿里云 AccessKey ID、AccessKey Secret、短信签名、短信模板和手机号码。
此示例代码使用阿里云SDK的Java版本,您需要在您的项目中引入相关的依赖库。另外,请确保已在阿里云控制台上申请了短信服务,创建了短信签名和短信模板,并开通了短信发送权限。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/88544.html