• 项目接入腾讯云短信服务SMS实现向用户发送手机验证码


    1、自述

    早在18年的时候,我就在项目中使用过阿里云的短信服务,现在我上阿里云短信控制台看,还能看到当时创建的短信签名,如下图所示。
    在这里插入图片描述

    出于某种原因,我现在想重新申请一个新的签名,却审批失败了,原因是:
    在这里插入图片描述
    意思很明确,就是说你必须要有一个上线的应用(公网能访问的),自己个人学习或者做一些线下项目啊都是申请不到短信签名的,之前18年的时候并没有这么严格。

    目前有两种方案:

    1. 买云服务器,买域名,备案域名
    2. 去别的云看看?比如腾讯云、华为云等

    第一种方案的话需要花钱,自己又只是个人用户,并没有需要上线的项目,所以这里先去腾讯云看看情况吧。

    经过自己的一番研究之后,发现腾讯云也一样,需要有上线的项目才能申请到短信签名,但万幸的是腾讯云支持公众号和小程序,毕竟是自家的产品,而且公众号和小程序这两样我都有,因此就顺利申请到短信签名了。

    2、腾讯云短信服务控制台

    一般的步骤是:申请短信签名->申请短信模板->发短信测试,模板就像下面这样的,
    在这里插入图片描述
    其中{1}、{2}是变量,现在我们在腾讯云短信服务控制台上发一条短信试试。

    腾讯云短信服务控制台链接:https://console.cloud.tencent.com/smsv2

    新建群发任务,如下图所示:
    在这里插入图片描述
    上传短信变量文件,比如csv格式文件内容如下所示:

    客户手机号,短信内容变量1,短信内容变量2
    131########,162626,5
    156########,162627,5
    
    • 1
    • 2
    • 3

    最后点击确定,等待审核通过后就能收到短信了。

    3、Java SDK发送短信

    实际情况下我们会在项目中调用腾讯云的SDK去发送短信,这里演示Java SDK。

    Maven依赖:

    <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>4.0.11</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    腾讯云短信服务相关接口Java SDK文档:https://cloud.tencent.com/document/product/382/43194

    这个文档写的很详细了,我就没必要再重写一遍了,下面展示一下我的发短信的测试代码(最简原则,去掉非必须的代码):

    // 1.构造认证对象
    Credential cred = new Credential("secretId", "secretKey");
    // 2.构造客户端配置
    HttpProfile httpProfile = new HttpProfile();
    httpProfile.setReqMethod("POST");
    httpProfile.setEndpoint("sms.tencentcloudapi.com");
    ClientProfile clientProfile = new ClientProfile();
    clientProfile.setHttpProfile(httpProfile);
    // 3.构造客户端
    SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
    // 4.请求参数
    String sdkAppId = "";
    String signName = "";
    String templateId = "";
    String[] templateParamSet = {""};
    String[] phoneNumberSet = {""};
    // 5.构造请求对象
    SendSmsRequest req = new SendSmsRequest();
    req.setSmsSdkAppid(sdkAppId);
    req.setSign(signName);
    req.setTemplateID(smsSendRequest.getTemplateId());
    req.setTemplateParamSet(templateParamSet);
    req.setPhoneNumberSet(phoneNumberSet);
    // 6.发送请求
    SendSmsResponse res = null;
    try {
        res = client.SendSms(req);
    } catch (TencentCloudSDKException e) {
        log.error(e.getMessage(),e);
    }
    log.info(SendSmsResponse.toJsonString(res));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
  • 相关阅读:
    【设计模式】外观模式(Facade Pattern)
    【JavaWeb】Day47.Mybatis基础操作——删除
    CNN-FCM:系统建模用于提高深度学习在时间序列预测中的稳定性
    运动检测辅助系统
    2014华为Java笔试题+数据库题
    hadoop 报不是内部或外部命令的解决办法
    物联网平台ThingsBoard源码讲解
    UDP 协议详解
    LeetCode【474. 一和零】
    2024 年如何成为一名成功的漏洞赏金猎人?成长总结以及相关资料推荐
  • 原文地址:https://blog.csdn.net/xl_1803/article/details/128162753