SpringBoot项目整合阿里云短信业务(非常详细)

这篇具有很好参考价值的文章主要介绍了SpringBoot项目整合阿里云短信业务(非常详细)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

详细介绍SpringBoot整合阿里云短信服务的每一步过程,同时会将验证码存放到Redis中并设置过期时间,尽量保证实战的同时也让没做过的好兄弟也能实现发短信的功能~

步骤1: 注册阿里云账号和创建Access Key

首先,你需要注册一个阿里云账号(如果还没有),然后在控制台中创建Access Key。这个Access Key将用于通过API调用阿里云短信服务。在控制台中创建Access Key非常简单,只需遵循阿里云的步骤即可。

步骤2: 添加阿里云短信和Spring Boot Redis依赖

在你的Spring Boot项目中,你需要添加阿里云短信服务、Redis的依赖。你可以在pom.xml文件中添加以下依赖:

    <!--  阿里云短信依赖  -->
    <dependency>
      <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>4.5.16</version>
     </dependency>
     <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
        <version>2.1.0</version>
   </dependency>
   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

步骤3: 配置阿里云短信服务、Redis参数并创建工具类

在 application.properties 或 application.yml 文件中,配置阿里云短信服务的参数,包括Access Key、Secret Key、短信签名、模板代码等信息。使用 @Value 注解将这些参数注入到你的服务类中:

application.yml:

aliyun:
  sms:
    sms-access-key-id: 
    sms-access-key-secret: 
    sms-sign-nam:  #签名名称
    sms-template-cod: #短信模板信息
    sms-endpoint: dysmsapi.aliyuncs.com
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password:

阿里云短信服务Utils:

package com.xhblogs.utils;

import com.alibaba.fastjson.JSON;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.HashMap;

@Component
public class AliyunSmsUtil {
    @Value("${aliyun.sms.sms-access-key-id}")
    private String accessKeyId;

    @Value("${aliyun.sms.sms-access-key-secret}")
    private String accessKeySecret;

    @Value("${aliyun.sms.sms-sign-nam}")
    private String signName;

    @Value("${aliyun.sms.sms-template-cod}")
    private String templateCode;

    @Value("${aliyun.sms.sms-endpoint}")
    private String endpoint;
    public boolean sendSms(String phoneNumber, HashMap<String, Object> templateParams) {
        try {
            DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            IAcsClient client = new DefaultAcsClient(profile);

            SendSmsRequest request = new SendSmsRequest();
            request.setPhoneNumbers(phoneNumber);
            request.setSignName(signName);
            request.setTemplateCode(templateCode);
            // 将HashMap转化为JSON字符串
            String templateParam = JSON.toJSONString(templateParams);
            request.setTemplateParam(templateParam);

            SendSmsResponse response = client.getAcsResponse(request);

            return "OK".equals(response.getCode());
        } catch (ClientException e) {
            e.printStackTrace();
            return false;
        }
    }
}

配置Redis:

@Configuration
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate<>();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

步骤4: 测试短信发送服务

  1. 从Redis中根据手机号码获取存储的验证码。如果找不到验证码(code为null),则生成一个新的四位随机验证码,并将其存储在一个HashMap中;如果Redis中已经存在验证码,说明之前已经发送过,返回一个成功的响应,提示用户不要重复发送验证码。
  2. 使用redisTemplate将新生成的验证码存储在Redis中,同时设置有效期为5分钟。
  3. 调用aliyunSmsUtil的sendSms方法,向指定的手机号码发送短信,包含新生成的验证码。
  4. 返回一个成功的响应,表示短信发送成功。
@GetMapping("/send/{phone}")
public ResultVo sendCode(@PathVariable String phone) {
    // 1. 从Redis中获取验证码
    String code = (String) redisTemplate.opsForValue().get(phone);
    log.info("获取到的验证码,{}", code);
    if (code == null) {
        // 2. 如果Redis中没有验证码记录,生成一个新的四位随机验证码
        String random = RandomUtil.getFourBitRandom();
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("code", random);
        // 3. 将新生成的验证码存储在Redis中,设置有效期为5分钟
        redisTemplate.opsForValue().set(phone, random, 5, TimeUnit.MINUTES);
        // 4. 调用阿里云接口发送短信,将验证码发送给指定的手机号码
        boolean b = aliyunSmsUtil.sendSms(phone, hashMap);
        log.info("短信发送状态,{}", b);
        return ResultUtils.success("发送成功", StatusCode.SUCCESS_CODE);
    } else {
        // 5. 如果Redis中已存在验证码,说明已经发送过验证码,返回一个成功的响应,提示用户不要重复发送
        return ResultUtils.success("请勿重复发送验证码", StatusCode.SUCCESS_CODE);
    }
}

步骤5:验证

启动启动,新手上路大佬们勿喷
springboot调用阿里云短信接口,spring boot,阿里云,后端
springboot调用阿里云短信接口,spring boot,阿里云,后端

springboot调用阿里云短信接口,spring boot,阿里云,后端
springboot调用阿里云短信接口,spring boot,阿里云,后端文章来源地址https://www.toymoban.com/news/detail-859433.html

到了这里,关于SpringBoot项目整合阿里云短信业务(非常详细)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解dedecms使用整合阿里大鱼短信接口进行短信发送的教程

    阿里大鱼虽免费,但不足的是内容、签名什么都要进行审核,且短信内容必须以模版方式进行调用,不能根据自己的需求随意发送, 接下介绍下阿里大鱼免费短信具体实现方法,该方法php程序可通用。 首先要去阿里大鱼下载sdk,引用其中5个基础文件即可,然后进入阿里大鱼

    2024年02月02日
    浏览(44)
  • springboot集成阿里云短信验证码

    1.添加pom.xml依赖 2.application.yml添加配置文件 3.创建随机验证码工具类 4.创建发送验证码工具类 注意事项 :在 application.yml 中配置了 accessKeyID等参数 ,想在一个工具类里面的静态方法使用,于是使用了静态变量。使用 @Value 注解获取值,如下: debug发现获取不到,为 null 。原因

    2024年02月01日
    浏览(48)
  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    阿里云官网: https://www.aliyun.com/ 点击官网首页注册按钮。 注册成功后,点击登录按钮进行登录。登录后进入短信服务管理页面,选择国内消息菜单: 短信签名是短信发送者的署名,表示发送方的身份。 切换到【模板管理】标签页: 短信模板包含短信发送内容、场景、变量信息

    2024年02月02日
    浏览(56)
  • 【Springboot】| 阿里云发送短信验证码,你会了吗?

    专栏 名字 🔥Elasticsearch专栏 es 🔥spring专栏 spring开发 redis专栏 redis学习笔记 🔥项目专栏 项目集锦 修bug专栏 bug修理厂 狮子之前发了一篇《邮箱发送验证码,你会了吗?》,很快上了热度榜单,但是那篇文章只是简单介绍了如何接收验证码的流程以及安利了一个接收验证码的

    2024年02月08日
    浏览(44)
  • 【业务功能篇94】微服务-springcloud-springboot-认证服务-注册功能-第三方短信验证API

      结合我们前面介绍的商城的架构我们需要单独的搭建一个认证服务。   首先创建一个SpringBoot项目,然后添加对应的依赖   我们需要把认证服务注册到Nacos中,添加对应的依赖,然后完成对应的配置 放开Nacos注册中心 然后启动测试   然后我们整理登录和注册的相关

    2024年02月09日
    浏览(57)
  • 阿里云短信服务详细说明与实战开发后端代码

    目前在很多项目中都出现使用短信验证码来实现注册、登录、购买、支付、转账等功能,发短信功能几乎已经成为项目中不可或缺的技术之一。 短信平台与运营商之间协同合作,利益分成。 短信发送流程通常涉及以下步骤: Java程序调用短信平台提供的API接口,将短信内容、

    2023年04月18日
    浏览(35)
  • 阿里云短信服务不对个人开放?如何在阿里云市场免费购买短信服务?云市场购买到的短信服务如何使用?(以谷粒学院项目为例)

    问题描述 : 在做谷粒学院项目时,需要使用阿里云的短信服务用于注册验证,但是阿里云的短信服务目前不对个人开放了,看到弹幕说可以在云市场购买,于是果断尝试了一把,这过程中又遇到头疼的依赖版本兼容问题,好在最终解决并测试成功了。在此把详细的操作流程

    2024年02月12日
    浏览(48)
  • 【SpringBoot+MP】阿里云短信测试服务操作流程、用户手机验证码登录实现

    前面是站在后台员工的角度,现在站在消费者的角度,当客户从移动端选择通过验证码登录APP,需要调用云服务器的短信功能(厂商短信服务API) ,后端要做的就是生成验证码并发送,并针对请求中客户收到的验证码与后端发送的进行比对,确保一致后成功登录。 首先针对

    2024年02月02日
    浏览(42)
  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98-99中,我们介绍了电商项目中的订单模块服务,那么最后就是需要进行支付动作,那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能,来进一步完成订单提交后的支付动作,支付宝的接口使用可以登录官网开发指南详情去了解 在我们对应

    2024年02月09日
    浏览(50)
  • 【业务功能篇45】SSM整合shiro项目:web.xml执行顺序

    web.xml 的加载顺序是:ServletContext - context-param - listener - filter - servlet 学习shiro时,需要配置shiro ,我们需要在filter过滤器之前,先初始化好shiro组件,不然请求认证无法走到shiro,根据web.xml的加载顺序,listener标签中会先于filter标签中的组件,所以我们配置shiro的context文件,单独

    2024年02月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包