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

亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、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 项目配置文件)中添加如下依赖:

    XML 复制代码
    <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 ID
        private static final String ACCESS_KEY_ID = "your_access_key_id";
        // 你的阿里云短信服务的SecretAccessKey
        private 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);
            // 设置短信模板Code
            request.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_ID、SECRET_ACCESS_KEY、SIGN_NAME 和 TEMPLATE_CODE,这些需要替换成你自己在阿里云控制台获取和配置的实际内容。
  • sendSms 方法接收要发送短信的手机号码以及短信模板对应的参数(以 JSON 格式字符串传入,根据模板中的变量来设置具体值),然后通过构建 SendSmsRequest 对象,设置相关的请求参数,如电话号码、签名、模板代码和模板参数等,接着利用 IAcsClient 发送请求,并根据响应结果判断短信是否发送成功。
  • main 方法则提供了一个简单的测试示例,你可以将示例中的电话号码和短信模板参数替换为真实有效的内容进行测试。

四、注意事项

  1. 网络问题:确保你的服务器或者运行代码的环境能够正常访问阿里云短信服务的接口,避免因网络限制导致短信发送失败。
  2. 短信内容规范:一定要严格按照阿里云短信服务的内容规范来创建短信模板,避免出现违规内容导致审核不通过或者短信发送受阻。
  3. 密钥安全AccessKeySecretKey 属于敏感信息,要妥善保管,最好不要硬编码在代码中,可以通过配置文件结合加密等方式来更安全地使用它们。
相关推荐
黄名富4 分钟前
Redis 数据结构(二)—集合和有序集合
java·数据结构·数据库·redis·缓存
king0079 分钟前
使用 Database Tools 实现高效数据查询的十大 IntelliJ IDEA 快捷键
java·数据库·intellij-idea
hshpy29 分钟前
spring-cloud-alibaba-dependencies compatible with spring boot and cloud
java·spring boot·后端
Austin_LICc1 小时前
IDEA回车自动写main sout 突然失效???
java·ide·学习·intellij-idea
技术栈人员1 小时前
SpringBoot 整合 Mail 轻松实现邮件自动推送
java·spring boot·后端
龙少95431 小时前
【SpringBoot中出现循环依赖错误】
java·spring boot·后端
一路狂飙的猪1 小时前
深入源码剖析:Spring Security 授权码模式的工作原理
java·spring boot·后端·spring
熬夜加班写代码1 小时前
SpringBoot【十三(准备篇)】集成在线接口文档Swagger2
java·spring boot·后端·spring·程序员
m0_748240911 小时前
router.resolve 方法
java
汤姆yu1 小时前
基于springboot的远程在线教育网站
java·spring boot·后端