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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1163679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑灯工厂的本质就是无人经济

黑灯工厂和人工智能原生公司已经在夜间高速运转&#xff0c;无需任何人监督其机械运作。这些零员工公司已经赚得盆满钵满&#xff0c;而它们的“创始人”们却在迪拜悠闲地喝着玛格丽塔。2024 年的某个时候&#xff0c;我煞费苦心地写了一些关于人工智能未来的文章&#xff0c;大…

一张图看懂上下文工程:AI提示技术的核心概念解析

今天聊一个被低估、却把无数人卡住的概念——Context Engineering&#xff0c;中文通常译作“上下文工程”或“语境工程”。它不是什么新出的框架&#xff0c;而是一套为AI系统搭好“前置信息环境”的方法论。它解决的根本问题是&#xff1a;为什么花了大价钱买最好的GPT-4、Cl…

【收藏必备】大模型开发核心技能:格式化输出与解析器全攻略

“ 大模型只能输出文本数据&#xff0c;需要通过转换才能变成我们需要的数据对象。” 在大模型的应用场景中&#xff0c;格式化输出是一个非常重要的环节&#xff1b;特别是对Agent智能体来说&#xff0c;没有格式化输出&#xff0c;智能体就是空中楼阁。 但从技术的角度来说&a…

COOH-S-CH2-S-COOH,双羧基和响应性桥链

COOH-S-CH2-S-COOH&#xff0c;双羧基和响应性桥链一、COOH–S–CH₂–S–COOH 的基本描述COOH–S–CH₂–S–COOH 是一种功能化小分子化合物&#xff0c;分子结构可简化表示为&#xff1a;HOOC–S–CH₂–S–COOH其结构特点如下&#xff1a;双羧基&#xff08;–COOH&#xff…

AI 法律顾问开发:基于 RAG + 知识图谱,如何让大模型精准回答“离婚财产分割”难题?

标签: #LLM #RAG #知识图谱 #LegalTech #Neo4j #LangChain 🤯 前言:为什么 ChatGPT 当不了律师? 在法律咨询中,Context (语境) 和 Logic (逻辑) 是核心。 用户问:“我老公出轨了,离婚时财产怎么分?” 通用 LLM:“根据法律规定,夫妻共同财产一般平均分割…出轨可能影…

Python+Vue的记账系统的设计与实现 Pycharm django flask

收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着社会的快速发展和人们生活水平的提高&#xff0c;财务管理变得越来越重要。记账系统作为一种有效的财务管理工具&#xff0c;逐渐受到广大用户的青睐。传统的理财记账都是人工手动的方…

GraphRAG 落地:用 Neo4j 构建知识图谱,让 AI 读懂《红楼梦》的人物关系

标签: #GraphRAG #Neo4j #LLM #知识图谱 #人工智能 #Python 📉 前言:向量检索的局限性 传统的 RAG 流程是: 用户提问 -> 向量化 -> 检索相似文档块 -> 喂给 LLM 但在《红楼梦》这种场景下,如果你问 “贾兰应该叫贾宝玉什么?”: Vector RAG:可能会检索到“贾…

Python+Vue的学生选课管理系统 Pycharm django flask

收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着教育信息化改革的不断深入&#xff0c;高校对于学生选课系统的需求越来越迫切。学生选课系统能够利用信息技术手段&#xff0c;提高选课的自由度和便利性&#xff0c;优化资源配置&…

【收藏学习】大模型RAG技术全攻略:从基础原理到高级优化方案

前言 – 在AI领域&#xff0c;随着大模型的广泛应用&#xff0c;如何高效地利用外部知识成为提升模型性能的关键。检索增强生成&#xff08;Retrieval-Augmented Generation, 简称RAG&#xff09;作为一种结合信息检索与文本生成的技术框架&#xff0c;正在迅速成为解决这一问题…

Webpack 慢到离谱?迁移到 Rspack (Rust) 实战:构建速度从 5 分钟缩短到 10 秒

标签&#xff1a; #Rspack #Webpack #Rust #前端工程化 #性能优化 #ByteDance&#x1f422; 前言&#xff1a;JavaScript 的算力极限 Webpack 之所以慢&#xff0c;核心原因在于它是由 JavaScript 编写的。 JS 是单线程的&#xff0c;且 JIT&#xff08;即时编译&#xff09;机…

Python+Vue的养老院信息管理系统设计与实现 Pycharm django flask

收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着社会的发展和人口老龄化的加剧&#xff0c;养老服务行业正面临着前所未有的挑战和机遇。传统的养老服务模式已经难以满足现代老年人的多元化需求&#xff0c;因此&#xff0c;借助信息…

书匠策AI:你的文献综述“第二大脑”,如何重塑学术写作的游戏规则?

亲爱的读者朋友们&#xff0c;大家好&#xff01;作为一名深耕论文写作科普领域的教育博主&#xff0c;我每天都在与各种学术写作难题作斗争。而今天&#xff0c;我要向大家介绍一位可能彻底改变你文献综述写作方式的“智能搭档”——书匠策AI。这不是又一篇枯燥的工具介绍&…

Service Mesh 落地:Istio 流量治理实战,如何实现“金丝雀发布”与全链路熔断?

标签&#xff1a; #Istio #ServiceMesh #Kubernetes #微服务 #流量治理 #DevOps&#x1f6e1;️ 前言&#xff1a;从“胖客户端”到“边车代理” 在 Istio 的世界里&#xff0c;每个微服务 Pod 中都会自动注入一个 Envoy Proxy 容器。 所有的流量&#xff08;进和出&#xff09…

Python+Vue的线上社区信息发布管理平台设计 Pycharm django flask

收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 随着互联网技术的不断发展&#xff0c;线上社区已经成为了人们日常生活中不可或缺的一部分。在这样的背景下&#xff0c;为了更好地服务社区用户&#xff0c;提高信息传递的效率和准确性&a…

书匠策AI:文献综述写作的“时空穿越指南”

在学术的浩瀚星空中&#xff0c;文献综述如同一张精密的星图&#xff0c;它不仅标注着前人探索的轨迹&#xff0c;更指引着后来者前行的方向。然而&#xff0c;手动编织这样一张星图&#xff0c;往往需要耗费大量的时间与精力&#xff0c;甚至可能迷失在信息的海洋中。幸运的是…

从 Chat 到 Agent:Solon AI 带你进入“行动派”大模型时代

在过去的一年里&#xff0c;我们已经习惯了与 AI “聊天”。但当你试图让大模型帮你在数据库查数据、给客户发邮件、或者自动排查系统日志时&#xff0c;你会发现&#xff1a;只会“说”的对话框&#xff0c;无法直接解决复杂的业务逻辑。 大模型需要从“聊天机器人”进化为“智…

学术写作新革命:书匠策AI如何让文献综述“自动成章”

在学术写作的江湖里&#xff0c;文献综述堪称“开篇定乾坤”的关键环节。它像一张精密的学术地图&#xff0c;既需要纵览历史长河中的研究脉络&#xff0c;又要标出当前领域的空白与争议。然而&#xff0c;传统文献综述写作往往陷入“大海捞针”的困境——海量文献筛选耗时耗力…

解锁文献综述新境界:书匠策AI的“学术星图导航仪”

在学术探索的浩瀚宇宙中&#xff0c;文献综述犹如一张精准的星图&#xff0c;它不仅勾勒出前人研究的轨迹&#xff0c;更为我们指明了前行的方向。然而&#xff0c;传统文献综述的撰写过程往往繁琐且耗时&#xff0c;如同在茫茫星海中手动绘制星图&#xff0c;既易出错又效率低…

微信投票源码系统的十大核心优势,支持图片、音频、视频等多形式投票

温馨提示&#xff1a;文末有资源获取方式在流量为王的时代&#xff0c;寻找一个低成本、高互动、强变现的运营抓手是成功的关键。微信投票以其天然的社交属性和竞争趣味&#xff0c;始终是有效的引流法宝。如今&#xff0c;一款全面升级的微信投票源码系统正式发布&#xff0c;…

sublime使用注意事项

1.文件的位置目录不能包含中文&#xff0c;不然插件ConvertToUTF8工作有问题&#xff0c;导致中文乱码。