湖南省住房和建设厅网站/南京最新消息今天
在 Spring Boot 中实现发送短信通常借助第三方短信服务提供商,如阿里云短信服务、腾讯云短信服务、华为云短信服务等。下面以阿里云短信服务为例,详细介绍在 Spring Boot 项目中实现发送短信的步骤。
1. 开通阿里云短信服务并获取相关信息
- 注册阿里云账号:如果还没有阿里云账号,需要先进行注册。
- 开通短信服务:登录阿里云控制台,开通短信服务,并完成相关的配置,如签名、模板的申请和审核。
- 获取 AccessKey:在阿里云控制台的 AccessKey 管理页面创建并获取
AccessKey ID
和AccessKey Secret
,这两个信息用于身份验证。
2. 添加依赖
在 pom.xml
中添加阿里云短信服务的 Java SDK 依赖:
收起
xml
<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 阿里云短信服务 SDK --><dependency><groupId>com.aliyun</groupId><artifactId>dysmsapi20170525</artifactId><version>2.0.22</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>tea-openapi</artifactId><version>0.2.1</version></dependency>
</dependencies>
3. 配置阿里云短信服务信息
在 application.properties
或 application.yml
中配置阿里云短信服务的相关信息:
收起
properties
aliyun.sms.access-key-id=your-access-key-id
aliyun.sms.access-key-secret=your-access-key-secret
aliyun.sms.sign-name=your-sign-name
aliyun.sms.template-code=your-template-code
将 your-access-key-id
、your-access-key-secret
替换为你在阿里云获取的 AccessKey ID
和 AccessKey Secret
,your-sign-name
替换为申请通过的短信签名,your-template-code
替换为申请通过的短信模板代码。
4. 创建短信发送工具类
创建一个工具类来封装短信发送的逻辑:
收起
java
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.teaopenapi.models.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.HashMap;
import java.util.Map;@Component
public class SmsSender {@Value("${aliyun.sms.access-key-id}")private String accessKeyId;@Value("${aliyun.sms.access-key-secret}")private String accessKeySecret;@Value("${aliyun.sms.sign-name}")private String signName;@Value("${aliyun.sms.template-code}")private String templateCode;public boolean sendSms(String phoneNumber, Map<String, String> templateParams) {try {// 创建 Config 对象并设置 AccessKey ID 和 AccessKey SecretConfig config = new Config().setAccessKeyId(accessKeyId).setAccessKeySecret(accessKeySecret);// 访问的域名config.endpoint = "dysmsapi.aliyuncs.com";// 创建短信服务客户端Client client = new Client(config);// 创建短信发送请求对象SendSmsRequest sendSmsRequest = new SendSmsRequest().setPhoneNumbers(phoneNumber).setSignName(signName).setTemplateCode(templateCode).setTemplateParam(com.alibaba.fastjson.JSON.toJSONString(templateParams));// 发送短信SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);// 判断短信是否发送成功return "OK".equals(sendSmsResponse.getBody().getCode());} catch (Exception e) {e.printStackTrace();return false;}}
}
5. 创建控制器进行测试
创建一个控制器类,在其中调用短信发送工具类来发送短信:
收起
java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;@RestController
public class SmsController {@Autowiredprivate SmsSender smsSender;@GetMapping("/sendSms")public String sendSms(@RequestParam String phoneNumber) {// 假设短信模板中有一个参数 code 用于传递验证码Map<String, String> templateParams = new HashMap<>();templateParams.put("code", "123456");boolean result = smsSender.sendSms(phoneNumber, templateParams);if (result) {return "短信发送成功";} else {return "短信发送失败";}}
}
6. 测试短信发送功能
启动 Spring Boot 应用程序,访问 http://localhost:8080/sendSms?phoneNumber=your-phone-number
,将 your-phone-number
替换为实际要接收短信的手机号码。如果一切配置正确,该手机号码将收到一条包含验证码的短信。
注意事项
- 确保申请的短信签名和模板已通过审核,否则短信无法发送成功。
- 不同的短信模板可能有不同的参数要求,需要根据实际情况修改
templateParams
中的参数。 - 阿里云短信服务有一定的使用限制和费用,需要关注相关的使用规则和计费标准。