JAVA实战:借助阿里云实现短信发送功能

news/2024/12/13 16:57:40/

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来的日子里不定期地为大家呈上这些领域的知识宝藏与实用经验分享🎁。每一个点赞👍,都如同春日里的一缕阳光,给予我满满的动力与温暖,让我们在学习成长的道路上相伴而行,共同进步✨。期待你的关注与点赞哟🤗!

在如今的很多应用场景中,短信发送功能是必不可少的,比如用户注册验证、密码找回等等。阿里云提供了便捷可靠的短信服务,今天我们就来详细讲讲如何在 Java 项目中利用阿里云来发送短信

一、前期准备

  1. 注册阿里云账号并开通短信服务
    首先,你需要有一个阿里云账号,如果没有的话,可以前往阿里云官网(阿里云-计算,为了无法计算的价值 )进行注册。注册完成后,登录阿里云控制台,搜索 “短信服务” 并开通该服务。

  2. 创建短信签名和短信模板
    短信服务中,你要创建符合你业务需求的短信签名(一般是代表发送短信的主体名称,需要审核通过)以及短信模板(短信具体的内容格式,包含一些变量占位符等,同样需要审核)。审核通过后,我们才能在代码中使用它们来发送短信

  3. 获取 AccessKey 和 SecretKey
    进入阿里云控制台的 “AccessKey 管理” 页面,创建一对 AccessKey 和 SecretKey。这两个密钥非常重要,相当于程序访问阿里云短信服务的凭证,一定要妥善保管,不要泄露出去。

二、项目搭建及依赖引入(以 Maven 项目为例)

  1. 创建 Java 项目(如果已有项目可跳过此步)
    使用你常用的 IDE(如 Intellij IDEA、Eclipse 等)创建一个新的 Java 项目,或者打开已有的 Java 项目。

  2. 引入阿里云短信服务的 Java SDK 依赖
    在项目的 pom.xml 文件(Maven 项目配置文件)中添加如下依赖:

    <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.3</version>
    </dependency>
    <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-dysmsapi</artifactId><version>2.1.0</version>
    </dependency>

    上述依赖会引入阿里云核心 SDK 以及短信服务相关的 Java 开发包,方便我们后续调用阿里云短信接口。

    三、编写代码实现短信发送功能

    下面是一个简单的 Java 类,用于实现发送短信的功能:

    java">import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.dysmsapi.model.v2.SendSmsRequest;
    import com.aliyuncs.dysmsapi.model.v2.SendSmsResponse;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.Profile;public class AliyunSmsSender {// 你的阿里云短信服务的AccessKey IDprivate static final String ACCESS_KEY_ID = "your_access_key_id";// 你的阿里云短信服务的SecretAccessKeyprivate static final String SECRET_ACCESS_KEY = "your_secret_access_key";// 短信签名名称,要和你在阿里云控制台审核通过的一致private static final String SIGN_NAME = "your_sign_name";// 短信模板Code,对应阿里云控制台审核通过的短信模板private static final String TEMPLATE_CODE = "your_template_code";public static void sendSms(String phoneNumbers, String templateParam) throws ClientException {// 设置地域ID,短信服务对应的地域,比如国内常用的是"cn-hangzhou"Profile profile = DefaultProfile.getProfile("cn-hangzhou", ACCESS_KEY_ID, SECRET_ACCESS_KEY);IAcsClient client = new DefaultAcsClient(profile);SendSmsRequest request = new SendSmsRequest();// 设置发送短信的电话号码,支持多个号码,以逗号分隔request.setPhoneNumbers(phoneNumbers);// 设置短信签名名称request.setSignName(SIGN_NAME);// 设置短信模板Coderequest.setTemplateCode(TEMPLATE_CODE);// 设置短信模板中的变量参数,格式为JSON字符串,例如:{"code":"123456"}request.setTemplateParam(templateParam);SendSmsResponse response = client.sendSms(request);if (response.getCode()!= null && response.getCode().equals("OK")) {System.out.println("短信发送成功");} else {System.out.println("短信发送失败,错误码:" + response.getCode() + ",错误信息:" + response.getMessage());}}public static void main(String[] args) {try {// 示例电话号码,这里替换成真实的接收短信手机号String phoneNumber = "138xxxxxxxx";// 示例短信模板参数,按照你的短信模板中定义的变量来设置对应的值,此处以JSON格式字符串示例String templateParams = "{\"code\":\"123456\"}";sendSms(phoneNumber, templateParams);} catch (ClientException e) {e.printStackTrace();}}
    }

    在上述代码中:

  • 首先定义了一些常量,包括 ACCESS_KEY_IDSECRET_ACCESS_KEYSIGN_NAME 和 TEMPLATE_CODE,这些需要替换成你自己在阿里云控制台获取和配置的实际内容。
  • sendSms 方法接收要发送短信的手机号码以及短信模板对应的参数(以 JSON 格式字符串传入,根据模板中的变量来设置具体值),然后通过构建 SendSmsRequest 对象,设置相关的请求参数,如电话号码、签名、模板代码和模板参数等,接着利用 IAcsClient 发送请求,并根据响应结果判断短信是否发送成功。
  • main 方法则提供了一个简单的测试示例,你可以将示例中的电话号码和短信模板参数替换为真实有效的内容进行测试。

四、注意事项

  1. 网络问题:确保你的服务器或者运行代码的环境能够正常访问阿里云短信服务的接口,避免因网络限制导致短信发送失败。
  2. 短信内容规范:一定要严格按照阿里云短信服务的内容规范来创建短信模板,避免出现违规内容导致审核不通过或者短信发送受阻。
  3. 密钥安全AccessKey 和 SecretKey 属于敏感信息,要妥善保管,最好不要硬编码在代码中,可以通过配置文件结合加密等方式来更安全地使用它们。

http://www.ppmy.cn/news/1554804.html

相关文章

Win10环境vscode+latex+中文快速配置

安装vscodelatex workshop 配置&#xff1a; {"liveServer.settings.donotVerifyTags": true,"liveServer.settings.donotShowInfoMsg": true,"explorer.confirmDelete": false,"files.autoSave": "afterDelay","exp…

大数据新视界 -- 大数据大厂之 Hive 临时表与视图:灵活数据处理的技巧(上)(29 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

SAP FICO物料分类账

一、物料分类账定义及功能 SAP FICO中的“物料分类账”&#xff08;Material Ledger&#xff09;是一个用于管理和追踪物料成本的工具。它是与财务会计&#xff08;FI&#xff09;和管理会计&#xff08;CO&#xff09;模块紧密集成的&#xff0c;主要用于处理与物料相关的成本…

OpenBayes 教程上新丨腾讯 Hunyuan3D-1.0 上线,10s 实现 3D 图像生成

3D 模型在游戏开发、影视动画、虚拟现实 (VR) 等多个行业和场景中发挥着重要作用&#xff0c;但现有的 3D 生成扩散模型在快速生成和泛化能力上仍存在不足。为了解决这些问题&#xff0c;腾讯的研究团队推出了 Hunyuan3D-1.0&#xff0c;同时开源了轻量版与标准版模型。这一创新…

【中工开发者】鸿蒙商城实战项目(启动页和引导页)

创建一个空项目 先创建一个新的项目选择第一个&#xff0c;然后点击finish 接下来为项目写一个名字&#xff0c;然后点击finish。 把index页面的代码改成下面代码块的代码&#xff0c;就能产生下面的效果 Entry Component struct Index {build() {Column(){Blank()Column(){…

小程序自定义tab-bar,踩坑记录

从官方下载代码 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1、把custom-tab-bar 文件放置 pages同级 修改下 custom-tab-bar 下的 JS文件 Component({data: {selected: 0,color: "#7A7E83",selectedColor: "#3…

muduo网络库:各类功能

一、 二、各类含义 1、EventLoop类 在Muduo网络库中&#xff0c;EventLoop类是核心组件之一。它的作用是**提供事件循环机制&#xff0c; **负责管理和调度各种事件&#xff08;如I/O事件、定时器事件&#xff09;&#xff0c;确保这些事件能够及时被处理&#xff0c;从而实现…

SSM虾米音乐项目3-后台流派模块的增删改

整体查询到的页面 <div class"widget-header"><i class"icon-list-ol"></i><h3>搜索条件</h3></div><div class"widget-content"><fieldset id"find"><div class"control-gr…