无缝集成指南,SpringBoot三步接入华为云短信服务

举报
yd_249127163 发表于 2026/10/27 11:11:31 2026/10/27
【摘要】 在 SpringBoot 中接入华为云短信服务,核心在于使用官方 SDK 并正确配置鉴权信息。整个过程可归纳为三个关键步骤:控制台准备、项目依赖与配置、以及代码实现。第一步:华为云控制台准备在写代码前,需先在华为云控制台完成实名认证并开通“消息&短信 MSGSMS”服务。随后,必须获取以下几项核心参数,否则代码无法跑通:· 访问密钥:在“我的凭证”中获取 Access Key (AK) 和 ...

在 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 参数,否则可能报错。

---


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。