Springboot整合阿里巴巴SMS的实现示例

 更新时间:2023年12月14日 10:49:27   作者:堕落年代  
本文主要介绍了Springboot整合阿里巴巴SMS的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前提条件

用户权限

要确保用户有这个权限

组权限

还要确保组要有这个权限

讲反了要先保证组有这个权限然后保证用户有这个权限,然后就可以使用这个用户的权限的key来调取api了

申请资质、签名等

申请资质

申请资质

点击这个进入声请就可以了然后等2个小时左右就可以通过了

申请签名

在这里插入图片描述

这个是为了之后自定义模板做准备

添加模板

添加模板

当然第一次是可以注册钉钉认证之后获取免费的一些额度

api引入

依赖引入

<!--sms的服务-->
 <dependency>
     <groupId>com.aliyun</groupId>
     <artifactId>alibabacloud-dysmsapi20170525</artifactId>
     <version>2.0.24</version>
 </dependency>

代码部分

package com.example.lpms.tool;

import com.example.lpms.common.R;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.models.*;
import com.aliyun.sdk.service.dysmsapi20170525.*;
import com.google.gson.Gson;
import darabonba.core.client.ClientOverrideConfiguration;

import java.util.concurrent.CompletableFuture;

/**
 * @author:DUOLUONIANDAI
 * @DATA:2023/12/13
 * @Title:
 */

@Component
public class SMSTool {
    @Value("${spring.sms.id}")
    String id;

    @Value("${spring.sms.secret}")
    String secret;

    @Value("${spring.sms.sign-name}")
    String signName;

    @Value("${spring.sms.templateCode}")
    String templateCode;

    public R sendSMS(String phone, String captcha) {

        try {

            // Configure Credentials authentication information, including ak, secret, token
            StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
                    .accessKeyId(id)
                    .accessKeySecret(secret)
                    //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
                    .build());

            // Configure the Client
            AsyncClient client = AsyncClient.builder()
                    .region("cn-shanghai") // Region ID
                    //.httpClient(httpClient) // Use the configured HttpClient, otherwise use the default HttpClient (Apache HttpClient)
                    .credentialsProvider(provider)
                    //.serviceConfiguration(Configuration.create()) // Service-level configuration
                    // Client-level configuration rewrite, can set Endpoint, Http request parameters, etc.
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                    // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
                                    .setEndpointOverride("dysmsapi.aliyuncs.com")
                            //.setConnectTimeout(Duration.ofSeconds(30))
                    )
                    .build();

            // Parameter settings for API request
            SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
                    .signName(signName)
                    .templateCode(templateCode)
                    .phoneNumbers(phone)
                    .templateParam("{\"code\":\"" + captcha + "\"}")
                    // Request-level configuration rewrite, can set Http request parameters, etc.
                    // .requestConfiguration(RequestConfiguration.create().setHttpHeaders(new HttpHeaders()))
                    .build();

            // Asynchronously get the return value of the API request
            CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
            // Synchronously get the return value of the API request
            SendSmsResponse resp = response.get();
            System.out.println(new Gson().toJson(resp));


            // Finally, close the client
            client.close();
        } catch (Exception e) {
            e.printStackTrace();
            return R.fail();
        }


        return R.ok();
    }

}

注意

这下面和官网不一样但是不这样写会报错,好像是因为这个是直接注入到哪里的,而这里是不需要注入的

// Configure Credentials authentication information, including ak, secret, token
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
        .accessKeyId(id)
        .accessKeySecret(secret)
        //.securityToken(System.getenv("ALIBABA_CLOUD_SECURITY_TOKEN")) // use STS token
        .build());

到此这篇关于Springboot整合阿里巴巴SMS的实现示例的文章就介绍到这了,更多相关Springboot整合阿里巴巴SMS内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 自定义一个简单的JDBC连接池实现方法

    自定义一个简单的JDBC连接池实现方法

    下面小编就为大家分享一篇自定义一个简单的JDBC连接池实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • jcrop 网页截图工具(插件)开发

    jcrop 网页截图工具(插件)开发

    今天给大家介绍一下一个web 中经常会用到的截图(如:头像等)工具,需要的朋友可以了解下
    2012-11-11
  • Kafka 在 java 中的基本使用步骤

    Kafka 在 java 中的基本使用步骤

    本文给大家介绍Kafka在java中的基本使用,本文分步骤结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-09-09
  • 一篇文章带你入门java面向对象

    一篇文章带你入门java面向对象

    这篇文章主要介绍了Java语言面向对象编程思想之类与对象实例详解,还是十分不错的,这里给大家分享下,需要的朋友可以参考,希望能帮到你
    2021-08-08
  • java仿C++模拟实现一个智能指针

    java仿C++模拟实现一个智能指针

    在 C++ 等语言中,指针 是对内存地址的直接操作,为灵活管理内存和实现数据结构提供了强大能力,本文将使用纯Java实现一个通用的 SmartPointer<T>框架为各种资源类型提供类似 C++ 智能指针的使用体验
    2025-05-05
  • SpringBoot创建maven多模块项目实战代码

    SpringBoot创建maven多模块项目实战代码

    本篇文章主要介绍了SpringBoot创建maven多模块项目实战代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • mybatis-plus saveOrUpdateBatch踩坑记录

    mybatis-plus saveOrUpdateBatch踩坑记录

    这篇文章主要介绍了mybatis-plus saveOrUpdateBatch踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nacos多个实例的服务调用失败问题及解决

    Nacos多个实例的服务调用失败问题及解决

    在微服务开发中,Nacos上出现多个同一服务实例导致OpenFeign调用失败,因为OpenFeign使用SpringCloudLoadbalancer,而SpringCloudLoadbalancer的底层默认负载均衡策略不支持Nacos,通过将负载均衡策略设置为Nacos,可以解决调用失败的问题
    2026-02-02
  • Springboot实现公共字段填充的示例详解

    Springboot实现公共字段填充的示例详解

    这篇文章主要为大家详细介绍了Springboot实现公共字段填充的相关知识,文中的示例代码讲解详细,对我们深入学习springboot有一定的帮助,感兴趣的小伙伴可以了解下
    2023-10-10
  • SpringBoot文件上传与下载功能实现详解

    SpringBoot文件上传与下载功能实现详解

    文件上传与下载是Web应用开发中常用的功能之一。接下来我们将讨论如何在Spring Boot的Web应用开发中,如何实现文件的上传与下载,感兴趣的可以了解一下
    2022-10-10

最新评论