Springboot实现Java阿里短信发送代码实例
简介
阿里云短信服务提供了短信发送、查询等功能,便于企业进行验证码、营销等短信业务。本文将以Springboot为基础,讲解如何使用Java SDK来实现阿里短信服务。
准备工作
在使用阿里短信服务之前,需要先进行以下准备工作:
- 在阿里云控制台中开通短信服务并获取Access Key ID和Access Key Secret。
- 引入aliyun-java-sdk-core和aliyun-java-sdk-dysmsapi依赖,可以通过Maven中央仓库获取。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.0.0</version>
</dependency>
发送短信
在发送短信的代码中,需要构造初始化的DefaultAcsClient对象,设置Access Key ID和Access Key Secret。然后通过CreateSmsRequest对象设置短信模板、签名、手机号等参数,最后调用sendSms方法发送短信。
以下是使用阿里云大于短信模板发送短信的示例代码:
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.CreateSmsRequest;
import com.aliyun.teaopenapi.models.Config;
import java.util.*;
public class SmsUtil{
public static void sendSms(String phone,String templateCode,String signName,String param){
Config config = new Config()
.setAccessKeyId("your-access-key-id")
.setAccessKeySecret("your-access-key-secret");
config.endpoint = "dysmsapi.aliyuncs.com";
Client client = new Client(config);
CreateSmsRequest createSmsRequest = new CreateSmsRequest()
.setPhoneNumbers(phone)
.setSignName(signName)
.setTemplateCode(templateCode)
.setTemplateParam("{'code':'" + param + "'}");
client.createSms(createSmsRequest);
}
}
多条示例说明
示例一:发送短信验证码
在发送短信验证码的代码中,需要使用阿里云短信服务提供的模板,设置验证码等参数。以下是使用Springboot实现发送短信验证码的示例代码:
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Random;
@Service
public class SmsService {
@Resource
private SmsConfig smsConfig;
public void sendVerificationCodeSms(String phone) {
DefaultProfile profile = DefaultProfile.getProfile(
smsConfig.getRegionId(),
smsConfig.getAccessKeyId(),
smsConfig.getAccessKeySecret());
IAcsClient client = new DefaultAcsClient(profile);
String code = String.valueOf(new Random().nextInt(899999) + 100000);
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
// 需要填写阿里云短信模板编码和短信签名
request.setDomain(smsConfig.getDomain());
request.setVersion(smsConfig.getVersion());
request.setAction(smsConfig.getActionSendSms());
request.putQueryParameter("RegionId", smsConfig.getRegionId());
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("SignName", smsConfig.getSignName());
request.putQueryParameter("TemplateCode", smsConfig.getTemplateCode());
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", code);
request.putQueryParameter("TemplateParam", jsonObject.toJSONString());
try {
// 发送短信
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (Exception e) {
e.printStackTrace();
}
}
}
在以上示例代码中,需要在配置文件中设置以下参数:
aliyun.sms.access-key-id=your-access-key-id
aliyun.sms.access-key-secret=your-access-key-secret
aliyun.sms.region-id=cn-hangzhou
aliyun.sms.sign-name=your-sign-name
aliyun.sms.template-code=your-template-code
aliyun.sms.version=2017-05-25
aliyun.sms.domain=dysmsapi.aliyuncs.com
aliyun.sms.action-send-sms=SendSms
示例二:发送营销短信
在发送营销短信的代码中,需要使用营销短信模板,设置营销短信参数。以下是使用Springboot实现发送营销短信的示例代码:
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
@Service
public class SmsService {
@Resource
private SmsConfig smsConfig;
public void sendMarketingSms() {
DefaultProfile profile = DefaultProfile.getProfile(
smsConfig.getRegionId(),
smsConfig.getAccessKeyId(),
smsConfig.getAccessKeySecret());
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
request.setMethod(MethodType.POST);
// 需要填写阿里云短信模板编码和短信签名
request.setDomain(smsConfig.getDomain());
request.setVersion(smsConfig.getVersion());
request.setAction(smsConfig.getActionSendBatchSms());
request.putQueryParameter("RegionId", smsConfig.getRegionId());
request.putQueryParameter("PhoneNumbers", smsConfig.getPhoneNumbers());
request.putQueryParameter("SignName", smsConfig.getSignName());
request.putQueryParameter("TemplateCode", smsConfig.getTemplateCode());
request.putQueryParameter("SmsUpExtendCode", "");
ArrayList<CommonRequest.SmsParams> list = new ArrayList<>();
CommonRequest.SmsParams smsParams = new CommonRequest.SmsParams();
smsParams.setParam("product", "你好世界");
smsParams.setParam("price", "9999");
list.add(smsParams);
request.putQueryParameter("TemplateParam", JSONObject.toJSONString(list));
try {
// 发送短信
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (Exception e) {
e.printStackTrace();
}
}
}
在以上示例代码中,需要在配置文件中设置以下参数:
aliyun.sms.access-key-id=your-access-key-id
aliyun.sms.access-key-secret=your-access-key-secret
aliyun.sms.region-id=cn-hangzhou
aliyun.sms.sign-name=your-sign-name
aliyun.sms.template-code=your-template-code
aliyun.sms.phone-numbers=your-phone-numbers
aliyun.sms.version=2017-05-25
aliyun.sms.domain=dysmsapi.aliyuncs.com
aliyun.sms.action-send-batch-sms=SendBatchSms
总结
本文以Springboot为基础,以阿里云短信服务为例,介绍了如何使用Java SDK来发送短信的代码实现。通过本文的示例代码,相信读者能够更加方便地使用阿里云短信服务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot实现Java阿里短信发送代码实例 - Python技术站