返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot项目中使用腾讯云发送短信的实现
  • 403
分享到

SpringBoot项目中使用腾讯云发送短信的实现

SpringBoot 腾讯云发送短信SpringBoot  发送短信 2023-05-16 15:05:22 403人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录第一步、申请腾讯云的短信服务并配置基本信息第二步、我们可以在api Explore中进行一下测试第三步、安装java的SDK第四步、在项目中编写代码,调用接口在一些项目中总会不可

在一些项目中总会不可避免的要用到短信服务,比如发送验证码等,那么如何进行短信的发送呢,我们这就来捋一捋,我这里采用的是腾讯云的短信服务。其他的云服务也大致一样。

第一步、申请腾讯云的短信服务并配置基本信息

首先进入腾讯云的短信服务界面传送门

https://console.cloud.tencent.com/smsv2

如上图所示,我们会看到要我们申请开通短信服务,开通后它会免费送我们100条国内短信。

接下来我们就要进行相关的配置,首先进行创建签名,按照要求填写就行。

这步之后创建短信正文的模板

创建正文模板我们可以选择使用标准模板。

配置完毕后就等待审核,审核完成后我们就可以使用接口发送短信了。

第二步、我们可以在API Explore中进行一下测试

测试前我们要首先找一下短信应用的APPID,如下图

填写完信息后点击发起调用即可将短信发送到对应的手机上。

之后在程序代码中进行调用,我们进行配置的参数和表单中的参数是一样的,只是多了secretID,secreTKEy。

第三步、安装java的SDK

在项目添加 Maven 依赖项,只需在 pom.xml 中找到<dependencies>标签,在里面添加以下依赖项即可。

<dependency>
     <groupId>com.tencentcloudapi</groupId>
     <artifactId>tencentcloud-sdk-java</artifactId>
     <!-- Go to Https://search.maven.org/search?q=tencentcloud-sdk-java and get the latest version. -->
     <!-- 请到https://search.maven.org/search?q=tencentcloud-sdk-java查询所有版本,最新版本如下 -->
     <version>3.1.322</version>
</dependency>

若是用其他语言进行配置,可进入网站查看详细说明:传送

第四步、在项目中编写代码,调用接口

以下是一些必要步骤

首先在项目yml文件中配置一些必要的参数信息,避免硬编码,便于维护。

sms:
  sdkAppId: 这里输入短信应用id
  secretId: 这里输入secretID
  secretKey: 这里输入key
  signName: 这里输入短信签名
  templateCodeId: 验证码模板id,有多个模板可以配置多个参数
  timeout: 配置RedisCache过期时间

配置好参数后,我们就要在程序中编写代码进行操作。

首先可以编写一个发送短息的组件代码SmsComponent,在里面完成获取SmsClient客户端,以及对表单参数进行设置内容和发送短信代码的封装。

 
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import lombok.Data;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
@ToString
@Data
@Component
@Slf4j
public class SmsComponent {
 
    @Value("${sms.sdkAppId}")   // 注入参数值
    private String sdkAppId;
 
    @Value("${sms.secretId}")
    private String secretId;
 
    @Value("${sms.secretKey}")
    private String secretKey;
 
    @Value("${sms.signName}")
    private String signName;
 
    @Value("${sms.templateCodeId}")
    private String templateCodeId;
 
    @Value("${sms.timeout}")
    private Integer timeout;
 
    
    public SmsClient getClient() {
 
        // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
        // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
        Credential cred = new Credential(secretId, secretKey);
        // 实例化一个http选项,可选的,没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        //这个setEndpoint可以省略的
        httpProfile.setEndpoint("sms.tencentcloudapi.com");
        // 实例化一个client选项,可选的,没有特殊需求可以跳过
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品的client对象,clientProfile是可选的
        return new SmsClient(cred, "ap-beijing", clientProfile);
    }
 
 
    
    public SendSmsRequest getReQtwo(String phone, String code, String param2, String templateId) {
        SendSmsRequest req = new SendSmsRequest();
        String[] phoneNumberSet = {"+86" + phone}; 
        req.setSmsSdkAppId(sdkAppId);     // 设置参数
        req.setPhoneNumberSet(phoneNumberSet);    
        req.setSignName(signName);
        req.setTemplateId(templateId);
        //模板内容的参数有几个就设置几个,我这里是两个
        String[] templateParamSet = {code,param2};
        req.setTemplateParamSet(templateParamSet);
        return req;     // 返回请求参数内容
    }
 
    
    public void sendCode(String phone, String code, String param2) {
 
        // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
        SendSmsResponse resp;
        try {
            resp = getClient().SendSms(getReqTwo(phone, code,param2 ,templateCodeId));  // 模板id是自己设置好的
            log.info(SendSmsResponse.toJSONString(resp));   // 把返回信息输入到日志中
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
    }
}

然后可以在service层创建发送短信的接口

 public interface ISmsService {
    
    public String sendCode( String phone,int leastTime);
 
    
    boolean checkCode(String phone, String code);
}

然后实现发送短信的接口,同时我们要自己写生成验证码的函数来确保每次发送的6位数字是随机的,并且实现校验验证码的函数,如果只是发送信息,那么只需要完成发送信息的那部分代码就行。

import java.util.Random;
import java.util.concurrent.TimeUnit;
 
@Service
public class ISmsServiceImpl implements ISmsService {
    @Autowired
    SmsComponent smsComponent;
    @Autowired
    RedisCache redisCache;
 
 
    
    public String sendCode(String phone, int leastTime) {
        if (phone == null || phone.length() == 0) {
            throw new ServiceException("手机号为空");
        }
 
        // 判断是否已经发送过
        String redisCode = redisCache.getCacheObject(Constants.HEAD + phone);
        if (!StringUtils.isEmpty(redisCode)) {
            long time = Long.parseLong(redisCode.split("_")[1]);
            if (System.currentTimeMillis() - time < leastTime) {
                throw new ServiceException("发送频率过高");
            }
        }
        String code = getSixBitCode();  // 生成新的验证码
        //存储 phone->code   
        redisCache.setCacheObject(Constants.HEAD + phone, code + "_" + System.currentTimeMillis(), smsComponent.getTimeout(), TimeUnit.MINUTES);
        Integer minute = leastTime / 60 / 1000; //分钟
        smsComponent.sendCode(phone, code, minute.toString());
        return "已发送验证码 " + phone;
    }
 
 
    
    private String getSixBitCode() {
        //随机数
        StringBuilder sb = new StringBuilder();
        Random rand = new Random();
        for (int i = 0; i < 6; i++) {
            sb.append(rand.nextInt(10));
        }
        return sb.toString();
    }
 
    
    @Override
    public boolean checkCode(String phone, String code) {
        String redisCode = redisCache.getCacheObject(Constants.HEAD + phone);
        if (StringUtils.isEmpty(redisCode)) {
            throw new ServiceException("验证码失效");
        }
        if (!StringUtils.equals(redisCode.split("_")[0], code)) {
            throw new ServiceException("验证码错误");
        } else {
            redisCache.deleteObject(Constants.HEAD + phone);
            return true;
        }
    }
}

其中Constant.HEAD为自己定义的前缀,便于进行区分,自行设置

public static final String HEAD = "sms:code:";

最后根据具体情况编写编写Controller层代码实现调用。

调用时,我们只需要获取用户输入的电话参数即可,模板中的第二个参数时间范围,我们自己设置好就行。

// 获取用户电话,调用发送短信接口
String msg = smsService.sendCode(sysUser.getPhonenumber(), 5 * 60 * 1000);

至此就可以在前端界面的表单中填写数据,或者在微信小程序里面发送短信了 ,在微信小程序中使用短信服务的话,要在后端代码中把微信小程序的appid,Secret等参数配置好才能正常调用。

到此这篇关于SpringBoot项目中使用腾讯云发送短信的实现的文章就介绍到这了,更多相关SpringBoot 腾讯云发送短信内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot项目中使用腾讯云发送短信的实现

本文链接: https://lsjlt.com/news/210160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot项目中使用腾讯云发送短信的实现
    目录第一步、申请腾讯云的短信服务并配置基本信息第二步、我们可以在API Explore中进行一下测试第三步、安装java的SDK第四步、在项目中编写代码,调用接口在一些项目中总会不可...
    99+
    2023-05-16
    SpringBoot 腾讯云发送短信 SpringBoot  发送短信
  • PHP调用腾讯云短信接口实现发送短信
    PHP调用腾讯云短信接口实现发送短信随着移动互联网的发展,短信成为了日常生活中必不可少的交流工具,而短信营销、验证码等应用也越来越普遍。腾讯云短信平台提供了一种便捷、安全、高效的短信服务,而PHP调用腾讯云短信接口实现发送短信也变得越来越简...
    99+
    2023-05-21
    PHP 腾讯云短信接口 发送短信
  • SpringBoot项目实现短信发送接口开发的实践
    一. 短信接口实现 描述:请求第三方短信接口平台(而第三方短信平台的接口请求是webservice方式实现的),此时我们要测试接口是否通,要用的工具SoapUI测试工具, 不能用P...
    99+
    2024-04-02
  • SpringBoot项目之怎么实现短信发送接口
    这篇文章主要讲解了“SpringBoot项目之怎么实现短信发送接口”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot项目之怎么实现短信发送接口”吧!一. 短信接口实现描述:请...
    99+
    2023-06-25
  • Spring中使用腾讯云发送短信验证码的实现示例
    目录1.所需依赖2.腾讯云配置(1).获取短信签名(2).创建正文模板(3).创建密钥(4).获取SdkAppId3.代码1. 所需依赖 <dependency...
    99+
    2024-04-02
  • Python调用腾讯云短信服务发送手机短信
    目录1、准备工作2、代码实现3、拓展4、闲聊1、准备工作 pip install qcloudsms_py 1.注册腾讯云账号 2.在产品列表内找到短信,在短信内添加应用 3.获取...
    99+
    2024-04-02
  • springboot整合RabbitMQ发送短信的实现
    目录RabbitMQ安装和运行MQ服务器设置创建用户创建虚拟机实现发送短信rabbit-mqservice-baseservice-core中发送消息service-sms中监听消息...
    99+
    2024-04-02
  • PHP调用云之讯短信接口实现批量短信发送
    在现代社会,短信的应用越来越广泛,不仅仅用于个人之间的通讯,也被各行各业用于相关业务的通知、提醒等。如何实现批量短信发送成为很多企业、组织和个人必须面对的问题。而PHP调用云之讯短信接口则成为一种利用云端技术实现高效批量短信发送的方式。云之...
    99+
    2023-05-22
    PHP编程 短信发送 云之讯接口
  • PHP调用容联云通讯短信接口实现短信发送
    随着移动互联网的飞速发展,短信成为了人们生活中必不可少的一部分。无论是企业营销、快递通知、验证码验证,都需要用到短信功能。而容联云通讯短信接口作为一种有效的短信解决方案,被越来越多的企业所采用。本文将介绍如何使用PHP调用容联云通讯短信接口...
    99+
    2023-05-21
    PHP 短信发送 容联云通讯
  • Android项目实现短信的发送、接收和对短信进行拦截
    说实话,关于Android中对短信的一些相关操作是一个比较入门的东西。那我现在还要来写这一篇博客的原因只是因为现在开发中有相关内容,而又想将这些东西分享给更多的人来学习,同时在...
    99+
    2022-06-06
    Android
  • Java整合腾讯云短信发送实例代码
    目录1. 引入相关maven依赖2. 编写短信发送工具类3. 业务层3. 相关工具类1. 引入相关maven依赖 <dependency> <groupId>...
    99+
    2024-04-02
  • SpringBoot使用榛子云实现手机短信发送验证码
    首先去榛子云官方平台申请注册自己的账号,官方网站:http://smsow.zhenzikj.com/ 有账号的话就直接登录,没有注册一个即可,很简单的注册 登录成功后就是这...
    99+
    2024-04-02
  • SpringBoot实现阿里云短信发送的示例代码
    阿里云accessID和secret请自行进入阿里云申请 sms.template.code 请进入阿里云,进行短信服务进行魔板添加 开源代码地址在文章末尾 话不多说,直接上代码: ...
    99+
    2024-04-02
  • springboot整合RabbitMQ发送短信的实现方法
    这篇文章主要介绍springboot整合RabbitMQ发送短信的实现方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!RabbitMQ安装和运行# 安装rpm -ivh erlang-...
    99+
    2023-06-15
  • Android使用Intent发送短信的实现方法
    本文实例讲述了Android使用Intent发送短信的实现方法。分享给大家供大家参考,具体如下: 在一个Activity中使用Intent发送短信 package com.z...
    99+
    2022-06-06
    方法 intent Android
  • PHP调用融云短信接口实现批量短信发送
    随着移动互联网时代的到来,短信已成为手机日常使用的重要方式之一。对于企业而言,短信发送是推广营销、客户维护和服务提醒的好方法,因此使用短信接口进行批量短信发送也成为常见的需求。融云是国内知名的即时通讯云服务提供商,提供了多种短信服务接口。本...
    99+
    2023-05-22
    PHP 批量短信发送 融云短信接口
  • Springboot实现阿里云通信短信服务有关短信验证码的发送功能
    前言短信验证码是通过发送验证码到手机的一种有效的验证码系统。主要用于验证用户手机的合法性及敏感操作的身份验证。现在市面上的短信服务平台有很多。大家在选择的时候未免会有些不好抉择。本人建议选择短信服务商应遵循以下几点: 服务商知名度高,业务...
    99+
    2023-05-31
    spring boot 阿里云
  • PHP调用云片网短信接口实现批量短信发送
    随着移动互联网的发展,短信营销成为企业在互联网时代中推广的有效方式之一,但是短信的发送量惊人,如何实现短信的批量发送成为了一项技术难题,本文将对如何使用PHP调用云片网短信接口实现批量短信发送进行详细讲解。一、云片网短信接口介绍1、云片网简...
    99+
    2023-05-23
    PHP 短信接口 云片网
  • SpringBoot项目部署到腾讯云的实现步骤
    目录将SpringBoot项目部署到腾讯云1、下载MySql2、导入sql文件3、下载JDK4、将本地程序打包成jar5、腾讯云部署jar将SpringBoot项目部署到腾讯云 注意...
    99+
    2024-04-02
  • 使用阿里云数据库实现短信发送功能
    本文将介绍如何使用阿里云数据库来实现短信发送功能。阿里云数据库是一个强大而易用的云数据库服务,可以提供稳定、安全的数据存储和访问。我们将使用阿里云数据库的API来实现短信发送功能。 首先,我们需要在阿里云上创建一个数据库实例。在阿里云控制台...
    99+
    2023-11-10
    阿里 短信发送 功能
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作