news 2026/9/3 1:10:08

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
无缝集成指南,SpringBoot三步接入华为云短信服务

大家好,我是小悟。

华为云短信服务简介

华为云消息&短信服务(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项目集成与代码实现

  1. 添加Maven依赖
    pom.xml中添加官方SDK依赖。

    <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-smsapi</artifactId> <!-- 请前往华为云官网SDK中心查询并使用最新版本 --> <version>{latest-version}</version> </dependency>
  2. 配置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 # 短信服务区域,如华北-北京四
  3. 创建配置类读取属性

    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; }
  4. 编写短信发送服务类
    这是最核心的业务类,用于组装和发送请求。

    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; } } }
  5. 在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表示模板变量错误)或状态回执错误码。根据这些代码在官方文档中排查,是最高效的调试方法。

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 1:03:03

大模型上下文窗口完全指南:三种场景深度解析,开发者必看收藏

在使用大语言模型&#xff08;LLM&#xff09;进行问答、推理或多轮对话任务时&#xff0c;我们常常遇到“上下文窗口”这个概念。它决定了模型一次性可以“处理”和“记住”的 token 总量&#xff0c;是理解模型能力边界和优化提示工程的基础。 本文将通过三张图&#xff0c;分…

作者头像 李华
网站建设 2026/9/2 21:46:31

清华新研究,Nature+Science双杀!

这项来自清华大学李勇团队的研究通过分析全球2.5亿篇科学文献&#xff0c;揭示了AI for Science领域存在的一个典型矛盾。就在刚刚&#xff0c;清华大学的一项AI for Science研究不仅登上Nature&#xff0c;而且还被Science深度报道了。这项来自清华大学李勇团队的研究通过分析…

作者头像 李华
网站建设 2026/9/2 21:47:30

再造一个10亿爆款!Ins之父卸任Anthropic CPO,空降一线写代码

「Instagram之父」放弃高管光环下场写代码&#xff0c;转岗Anthropic Labs团队担任「前线指挥」&#xff0c;这一招「创始人模式」&#xff0c;吹响了大模型下半场生死战的冲锋号。刚刚&#xff0c;Anthropic高层传出大调整&#xff01;曾一手打造了Instagram的硅谷传奇Mike Kr…

作者头像 李华
网站建设 2026/9/2 21:47:20

书匠策AI:解锁文献综述写作的“时空折叠术”

在学术研究的浩瀚星河中&#xff0c;文献综述是连接过去与未来的桥梁。它既是研究者梳理前人成果的“考古地图”&#xff0c;也是为自身研究定位的“导航系统”。然而&#xff0c;传统文献综述写作常陷入“大海捞针”的困境——面对海量文献&#xff0c;如何精准筛选&#xff1…

作者头像 李华
网站建设 2026/9/2 22:35:37

多维度编码分子信息的分子属性预测方法【附完整代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅成品或者定制&#xff0c;扫描文章底部微信二维码。(1) 基于注意力机制的序列与图双编码器分子属性预测模型药物分子的属性预测是药物研发…

作者头像 李华
网站建设 2026/9/2 21:46:51

书匠策AI:文献综述写作的“智能拼图师”

在学术写作的版图中&#xff0c;文献综述如同一块关键的拼图&#xff0c;它不仅勾勒出研究领域的全貌&#xff0c;更指引着后续探索的方向。然而&#xff0c;面对浩如烟海的文献&#xff0c;如何高效、精准地完成一篇高质量的文献综述&#xff0c;成了许多学者和学生心中的难题…

作者头像 李华