无缝集成指南,SpringBoot三步接入华为云短信服务
在 SpringBoot 中接入华为云短信服务,核心在于使用官方 SDK 并正确配置鉴权信息。整个过程可归纳为三个关键步骤:控制台准备、项目依赖与配置、以及代码实现。
第一步:华为云控制台准备
在写代码前,需先在华为云控制台完成实名认证并开通“消息&短信 MSGSMS”服务。随后,必须获取以下几项核心参数,否则代码无法跑通:
· 访问密钥:在“我的凭证”中获取 Access Key (AK) 和 Secret Key (SK)。
· 应用信息:创建短信应用后,获取 app_id 和 app_key。
· 签名与模板:申请并审核通过的签名名称(如【华为云】)和模板 ID(注意模板中的变量 {1} 需在代码中按序传入)。
第二步:SpringBoot 项目配置
在 pom.xml 中引入官方 SMS SDK 依赖(建议去官网查最新版):
```xml
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-smsapi</artifactId>
<version>3.1.100</version> <!-- 请替换为最新版本 -->
</dependency>
```
接着在 application.yml 中集中管理上述敏感信息:
```yaml
huaweicloud:
sms:
ak: 你的AK
sk: 你的SK
project-id: 你的项目ID # 在“我的凭证-项目列表”查看
sender: 10690xxxxxxxx # 通道号,应用详情中查看
signature: 你的签名名称
template-id: 你的模板ID
region: cn-north-4
```
第三步:编写发送服务
创建一个配置类读取 YAML 属性,并编写核心 Service。代码的关键逻辑是:使用 BasicCredentials 进行鉴权,构建 SmsClient,然后组装请求体发送。
```java
@Service
public class HuaweiSmsService {
@Autowired private SmsConfig config; // 对应上面的yml配置类
public void sendCode(String mobile, String code) {
// 1. 配置鉴权
BasicCredentials auth = new BasicCredentials()
.withAk(config.getAk()).withSk(config.getSk()).withProjectId(config.getProjectId());
// 2. 创建客户端
SmsClient client = SmsClient.newBuilder()
.withCredential(auth).withRegion(SmsRegion.valueOf(config.getRegion())).build();
// 3. 组装请求(注意变量格式为 ["code"])
SendSmsRequest request = new SendSmsRequest()
.withFrom(config.getSender())
.withTo(mobile) // 国内号码格式如 +86138xxxx
.withTemplateId(config.getTemplateId())
.withTemplateParas(Arrays.asList(code)) // 对应模板中的 {1}
.withSignature(config.getSignature());
// 4. 发送并处理异常
try {
client.sendSms(request);
} catch (Exception e) {
// 实际项目中请记录日志并处理异常
e.printStackTrace();
}
}
}
```
避坑提示:发送国内短信时,接收号码建议带 +86 前缀(如 +8613812345678);如果模板是“通用模板”,则必须传 signature 参数,否则可能报错。
---
- 点赞
- 收藏
- 关注作者
评论(0)