下面是详细讲解“SpringBoot实现阿里云短信发送的示例代码”的完整攻略,包含示例说明:
1. 注册阿里云短信服务
- 首先需要在阿里云官网上注册一个账号,进入控制台后选择开通短信服务。
- 开通短信服务后,获取AccessKey ID和AccessKey Secret。
2. 添加阿里云短信依赖
在SpringBoot项目中,使用Maven或Gradle添加阿里云短信依赖。以Maven为例,添加如下依赖:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-sms</artifactId>
<version>1.0.0</version>
</dependency>
3. 配置阿里云短信服务信息
在application.yml或application.properties文件中配置阿里云短信的AccessKey ID和AccessKey Secret等信息。
aliyun:
access-key-id: 你的AccessKey ID
access-key-secret: 你的AccessKey Secret
sms:
sign-name: 你的短信签名
template-code: 你的短信模板代码
4. 编写阿里云短信发送服务类
在SpringBoot项目中,创建一个短信发送服务类,用于调用阿里云短信API发送短信。示例代码如下:
@Service
public class SmsService {
@Value("${aliyun.sms.sign-name}") // 从配置文件中获取短信签名
private String signName;
@Value("${aliyun.sms.template-code}") // 从配置文件中获取短信模板代码
private String templateCode;
/**
* 发送短信
*
* @param phoneNumbers 手机号码,多个号码用逗号隔开
* @param params 短信参数,格式为{"key1":"value1","key2":"value2"}
* @return 发送是否成功
*/
public boolean sendSms(String phoneNumbers, Map<String, String> params) {
try {
// 实例化阿里云短信服务的API请求对象
DefaultProfile profile = DefaultProfile.getProfile("default", accessKeyId, accessKeySecret);
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", JSON.toJSONString(params));
// 发送短信
CommonResponse response = client.getCommonResponse(request);
return response.getHttpResponse().isSuccess() && response.getData().contains("\"Code\":\"OK\"");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
在sendSms方法中,调用阿里云短信API发送短信。其中,phoneNumbers参数表示要发送短信的手机号码,params参数表示短信模板中的参数,格式为JSON字符串。
5. 使用短信发送服务类发送短信
在需要发送短信的地方,注入短信发送服务类,调用sendSms方法发送短信。示例代码如下:
@RestController
public class SmsController {
@Autowired
private SmsService smsService;
@PostMapping("/send/sms")
public boolean sendSms(@RequestParam("phoneNumbers") String phoneNumbers,
@RequestParam("code") String code) {
Map<String, String> params = new HashMap<>();
params.put("code", code);
return smsService.sendSms(phoneNumbers, params);
}
}
在sendSms方法中,调用smsService.sendSms方法发送短信。其中,phoneNumbers参数表示要发送短信的手机号码,code参数表示短信验证码。
示例说明:
这里给出两个示例,分别是:
- 在注册页面中发送短信验证码
在注册页面中,用户输入手机号码后,点击发送验证码按钮,通过调用短信发送服务类发送验证码。前端代码如下:
// 点击发送验证码按钮
$('#sendCode').click(function () {
// 获取用户输入的手机号码
var phoneNumber = $('#phoneNumber').val();
// 向后端API发送请求,调用短信发送服务类发送验证码
$.post('/send/sms', {phoneNumbers: phoneNumber, code: '123456'}, function (result) {
if (result) {
alert('验证码发送成功!');
} else {
alert('验证码发送失败!');
}
});
});
后端代码如下:
@RestController
public class SmsController {
@Autowired
private SmsService smsService;
@PostMapping("/send/sms")
public boolean sendSms(@RequestParam("phoneNumbers") String phoneNumbers,
@RequestParam("code") String code) {
Map<String, String> params = new HashMap<>();
params.put("code", code);
return smsService.sendSms(phoneNumbers, params);
}
}
- 在找回密码页面中发送短信验证码
在找回密码页面中,用户输入手机号码后,点击发送验证码按钮,通过调用短信发送服务类发送验证码。前端代码如下:
// 点击发送验证码按钮
$('#sendCode').click(function () {
// 获取用户输入的手机号码
var phoneNumber = $('#phoneNumber').val();
// 向后端API发送请求,调用短信发送服务类发送验证码
$.post('/send/sms', {phoneNumbers: phoneNumber, code: '654321'}, function (result) {
if (result) {
alert('验证码发送成功!');
} else {
alert('验证码发送失败!');
}
});
});
后端代码同上。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot实现阿里云短信发送的示例代码 - Python技术站