当前位置: 代码网 > it编程>编程语言>Java > SpringBoot接入华为云短信SDK的流程步骤

SpringBoot接入华为云短信SDK的流程步骤

2026年01月16日 Java 我要评论
华为云短信服务简介华为云消息&短信服务(msg&sms)为企业提供了稳定、合规的全球短信发送能力。它主要有以下特点:核心功能:支持发送验证码短信(用于登录、注册)和通知短信(用于物流、

华为云短信服务简介

华为云消息&短信服务(msg&sms)为企业提供了稳定、合规的全球短信发送能力。它主要有以下特点:

  • 核心功能:支持发送验证码短信(用于登录、注册)和通知短信(用于物流、消费通知)。
  • 核心概念:要发送短信,你必须在控制台提前创建短信应用、申请并审核通过短信签名短信模板。签名是发送方标识(如“【华为云】”),模板是包含变量的固定内容。

springboot接入华为云短信sdk步骤

以下是使用华为云官方java sdk进行集成的详细步骤。

第一步:开通服务与前期准备

  1. 注册与实名:使用企业主体注册华为云账号,并完成企业实名认证
  2. 开通服务:在控制台搜索并开通“消息&短信 msgsms”服务。
  3. 准备密钥:进入“我的凭证 > 访问密钥”,获取用于api调用的access key (ak)secret key (sk)

第二步:控制台配置(关键步骤)
这是发送短信的前提,所有配置均需审核。

  1. 创建应用:在“应用管理”中创建短信应用,获取app_idapp_key
  2. 申请签名:在“签名管理”中,根据你的企业身份申请短信签名。签名需要审核,且推广类签名需证明与接收方有会员或订 购关系。
  3. 申请模板:在“模板管理”中创建模板。模板内容需符合规范,例如验证码模板:“您的验证码为:{1},请在{2}分钟内填写。” 提交后等待审核。

第三步:springboot项目集成与代码实现

添加maven依赖
pom.xml中添加官方sdk依赖。

<dependency>
    <groupid>com.huaweicloud.sdk</groupid>
    <artifactid>huaweicloud-sdk-smsapi</artifactid>
    <!-- 请前往华为云官网sdk中心查询并使用最新版本 -->
    <version>{latest-version}</version>
</dependency>

配置ak/sk和应用信息
application.yml中配置你的密钥和应用信息。

huaweicloud:
  sms:
    ak: your-access-key # 替换为你的ak
    sk: your-secret-key # 替换为你的sk
    project-id: your-project-id # 在“我的凭证-项目列表”中查找
    sender: 10690xxxxxxxx # 通道号,在创建的应用详情中查看
    signature: 华为云测试 # 已审核通过的签名名称
    template-id: xxxxxxxx # 已审核通过的模板id
    region: cn-north-4 # 短信服务区域,如华北-北京四

创建配置类读取属性

import org.springframework.boot.context.properties.configurationproperties;
import org.springframework.stereotype.component;
import lombok.data;

@component
@configurationproperties(prefix = "huaweicloud.sms")
@data
public class smsconfig {
    private string ak;
    private string sk;
    private string projectid;
    private string sender;
    private string signature;
    private string templateid;
    private string region;
}

编写短信发送服务类
这是最核心的业务类,用于组装和发送请求。

import com.huaweicloud.sdk.core.auth.basiccredentials;
import com.huaweicloud.sdk.sms.v2.smsclient;
import com.huaweicloud.sdk.sms.v2.model.*;
import com.huaweicloud.sdk.sms.v2.region.smsregion;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;
import java.util.arrays;
import java.util.list;

@service
public class huaweismsservice {

    @autowired
    private smsconfig smsconfig;

    public boolean sendsinglemessage(string mobile, list<string> templateparams) {
        // 1. 构建认证信息
        basiccredentials auth = new basiccredentials()
                .withak(smsconfig.getak())
                .withsk(smsconfig.getsk())
                .withprojectid(smsconfig.getprojectid());

        // 2. 初始化客户端 (注意region枚举可能随sdk版本变化)
        smsclient client = smsclient.newbuilder()
                .withcredential(auth)
                .withregion(smsregion.valueof(smsconfig.getregion().touppercase().replace("-", "_")))
                .build();

        // 3. 构造发送请求
        sendsmsrequest request = new sendsmsrequest()
                .withfrom(smsconfig.getsender()) // 发送号码(通道号)
                .withto(arrays.aslist(mobile)) // 接收方号码列表
                .withtemplateid(smsconfig.gettemplateid()) // 模板id
                .withtemplateparas(templateparams) // 模板变量值列表
                .withsignature(smsconfig.getsignature()); // 签名名称

        // 4. 发送请求并处理响应
        try {
            sendsmsresponse response = client.sendsms(request);
            // 根据sdk版本,成功判断可能是 response.gethttpstatuscode() == 200 或解析body中的code
            system.out.println("request id: " + response.getrequestid());
            return true;
        } catch (exception e) {
            e.printstacktrace();
            return false;
        }
    }
}

在controller或业务层调用

@restcontroller
@requestmapping("/api/sms")
public class smscontroller {
    @autowired
    private huaweismsservice smsservice;

    @postmapping("/send-verification")
    public string sendverificationcode(@requestparam string phone) {
        // 生成随机验证码
        string code = string.valueof((int)((math.random() * 9 + 1) * 100000));
        // 组装模板参数,顺序需与模板中变量定义一致
        list<string> params = arrays.aslist(code, "5");

        boolean issuccess = smsservice.sendsinglemessage(phone, params);
        if(issuccess) {
            return "短信发送成功,验证码:" + code; // 生产环境不应返回验证码
        } else {
            return "短信发送失败";
        }
    }
}

重要补充与总结

将以上步骤串联起来,整个接入流程和注意事项如下:

总结与核心建议

  1. 官方sdk是首选:华为云提供了官方的java sdk,直接集成是最稳妥的方式。
  2. 配置先于代码:务必理解“应用-签名-模板”的依赖关系。所有配置必须先在控制台 完成并通过审核,代码才能成功调用。
  3. 严格遵循内容规范:这是成功送达的关键。特别是面向国内用户时,务必遵守最新的合规要求。
  4. 关注错误码:发送失败时,华为云会返回明确的api错误码(如e200028表示模板变量错误)或状态回执错误码。根据这些代码在官方文档中排查,是最高效的调试方法。

以上就是springboot接入华为云短信sdk的流程步骤的详细内容,更多关于springboot接入华为云短信sdk的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com