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

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

引言

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

阿里云短信服务简介

  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、验证测试 

 

                                          


http://www.kler.cn/a/576431.html

相关文章:

  • vLLM + Open-WebUI 本地私有化部署 DeepSeek-R1-Distill-Qwen-32B 方案
  • 深入解析PHP性能瓶颈:识别与优化策略
  • element-ui popover 组件源码分享
  • 安装与配置 STK-MATLAB 接口
  • 红果短剧安卓+IOS双端源码,专业短剧开发公司
  • git push报错【remote: You are not allowed to push code to this project.】解决办法
  • Leetcode 刷题记录 03 —— 滑动窗口
  • 进程存储相关的关键数据结构
  • 网络编程 day4
  • 使用开源OPUS-MT模型进行文本翻译(python)
  • 针对Ollama进行DeepSeek本地部署存在的安全风险,使用nginx进行反向代理配置是一种有效的解决方案
  • 开发环境搭建-07.后端环境搭建-前后端联调-Nginx反向代理和负载均衡配置
  • 微软发布Dragon Copilot,打造医疗行业首款AI语音助手
  • 深度学习代码解读——自用
  • Qt调试功能使用方法
  • bash: uwsgi: 未找到命令
  • 基于Python+openGauss实现(图形界面)多功能本地视频播放系统
  • 使用 Apache POI 实现 Excel 单元格合并
  • uniapp 安卓app图片回显,默认不支持http图片地址,上传图片和回显图片
  • 腾讯 TDF 即将开源 Kuikly 跨端框架,Kotlin 支持全平台