当前位置: 首页 > news >正文

扩展------项目中集成阿里云短信服务

引言

        在当今数字化时代,短信服务在各种项目中扮演着重要角色,如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能,成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务,帮助开发者快速上手并实现相关功能。

阿里云短信服务简介

  1. 服务特点

    • 高送达率:依托阿里云强大的通信网络和优化算法,确保短信能够快速、准确地送达用户手机。

    • 高并发处理能力:能够支持大规模的短信发送请求,满足企业级应用的需求。

    • 丰富的功能:提供多种短信模板类型,支持变量替换,方便个性化定制短信内容。

    • 安全可靠:采用多重安全防护机制,保障用户数据和隐私安全。

  2. 应用场景

    • 用户注册与登录:发送验证码短信,实现用户身份验证。

    • 订单通知:及时通知用户订单状态更新,如发货、配送、完成等。

    • 营销推广:向用户发送促销活动、新品推荐等短信,提升用户活跃度和转化率。

    • 其他通知:如账户余额提醒、系统公告等。

集成步骤

1、注册阿里云账号,开通短信服务

2、创建AccessKey ID和AccessKey Secret

 

3、创建模板、签名(可直接使用测试模板)

4、在项目中引入依赖 

 <dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>alibabacloud-dysmsapi20170525</artifactId>
     <version>3.0.1</version>
 </dependency>
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version>1.2.47</version>
 </dependency>

5、创建工具类

import com.alibaba.fastjson.JSONObject;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse;
import com.google.gson.Gson;
import darabonba.core.client.ClientOverrideConfiguration;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

@Component
public class ALIMessageUtil {

    public static final String ALIBABA_CLOUD_ACCESS_KEY_ID = "";
    public static final String ALIBABA_CLOUD_ACCESS_KEY_SECRET = "";
    public static final String ALIBABA_CLOUD_REGION_ID = "cn-qingdao";
    public static final String ALIBABA_CLOUD_ENDPOINT = "dysmsapi.aliyuncs.com";
    public static final String ALIBABA_CLOUD_SIGNNAME = "阿里云短信测试";
    public static final String ALIBABA_CLOUD_TEMPLATE_CODE = "SMS_154950909";

    public static boolean sendMessage(String phone, Map<String, Object> params) {
        // 阿里云账号凭证配置
        StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                .accessKeyId(ALIBABA_CLOUD_ACCESS_KEY_ID)
                .accessKeySecret(ALIBABA_CLOUD_ACCESS_KEY_SECRET)
                .build());

        // 异步客户端
        AsyncClient client = AsyncClient.builder()
                .region(ALIBABA_CLOUD_REGION_ID)                               // Region ID
                .credentialsProvider(provider)
                .overrideConfiguration(
                        ClientOverrideConfiguration.create()
                                .setEndpointOverride(ALIBABA_CLOUD_ENDPOINT)
                )
                .build();

        // 发送API参数配置
        SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
                .signName(ALIBABA_CLOUD_SIGNNAME)                   //签名
                .templateCode(ALIBABA_CLOUD_TEMPLATE_CODE)          //模板CODE
                .phoneNumbers(phone)                                //接收短信的手机号码
                .templateParam(JSONObject.toJSONString(params))     //短信内容
                .build();

        // 发送短信并且获得返回结果
        CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);

        try {
            SendSmsResponse resp = response.get();
            System.out.println(new Gson().toJson(resp.getBody()));
            return "OK".equals(resp.getBody().getCode());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭客户端
            client.close();
        }
        return false;
    }
}

6、项目中使用即可(发送验证码)

@GetMapping("/getCode")
    @Operation(summary = "获取验证码")
    public void getCode(@RequestParam String Phone) {
        //随机生成六位数字验证码
        String code = String.valueOf((int) ((Math.random() * 9 + 1) * 100000));
        Map<String, Object> params = new HashMap<>();
        params.put("code", code);
        ALIMessageUtil.sendMessage(Phone, params);
        log.info(Phone+"-已发送短信:" + "验证码为: "+ code);
        //将验证码存在Redis中,并且5分钟内有效

    }

7、验证测试 

 

                                          

相关文章:

  • Android Studio 一直 Loading devices
  • C++:面向对象编程(续)
  • DeepSeek DeepEP学习(二)normal notify dispatch
  • 【开源宝藏】Spring Trace 一种轻量级的日志追踪新方式
  • 第三次CCF-CSP认证(含C++源码)
  • Redis数据结构深度解析:从String到Stream的奇幻之旅(一)
  • Clion快捷键、修改字体
  • 深度学习系列78:使用langchain的api进行RAG
  • 介绍exadata中的smart Scan技术
  • Java在小米SU7 Ultra汽车中的技术赋能
  • 回归预测 | Matlab实现GWO-BP-Adaboost基于灰狼算法优化BP神经网络结合Adaboost思想的回归预测
  • TDengine SQL手册—删除数据
  • Springboot中的VO、PO、DAO、BO、DTO、POJO
  • 测试周期紧张?功能与非功能测试的 5 个平衡策略
  • 数学建模笔记——层次分析法(AHP)
  • Qt信号与槽机制实现原理
  • 《DeepSeek MoE架构下,动态专家路由优化全解析》
  • 微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)
  • bootstrap接入kkFileView
  • 对deepseek进行微调
  • 东莞网站优化费用/关键词排名点击
  • 找企业名录的网站/seo外链收录
  • 制作网页怎样添加背景音乐/优化seo公司哪家好
  • 宣武网站建设/seo链接优化
  • 湖南平台网站建设推荐/奶糖 seo 博客
  • cdn/优化网站排名的方法