• 使用腾讯云发送短信 ---- 手把手教你搞定所有步骤


    最近在跟着一位大佬搞他的Austin项目,austin项目核心功能:发送消息。

    这里作者使用了腾讯云发送短信,因为注册就送 100条免费短信的额度。发短信的功能就不用花钱了。

    这里就记录了使用腾讯云的整个过程

    第一步:注册腾讯云

    注册一个腾讯云账户,腾讯云中提供了很多功能:云服务器、云存储你、云直播、云短信等很多功能。

    注册地址:https://cloud.tencent.com/

    根据提示一步步进行注册即可,例如:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里注册完成后再进行实名认证即可。有一些按照自己的的实际情况填写即可,不知道的可以随便填。

    第二步:开通云短信

    腾讯云注册成功之后,登录腾讯云并去开通云短信服务,开通短信服务后才能发短信。

    开通地址:https://console.cloud.tencent.com/smsv2

    开通完成之后就可以看到这个一个页面了

    在这里插入图片描述
    然后需要我们做的是选择 应用管理–> 应用列表,创建一个新的应用

    在这里插入图片描述

    创建完成后就可以看到我们后面需要使用的信息:

    在这里插入图片描述

    第三步:创建签名

    在腾讯云短信签名时需要认证,认证需要填写签名类型:网站、APP、小程序、公众号,前三种比较难搞定我们个人使用的话都使用订阅号,也推荐大家使用这样的方式。

    所以咱们先搞一个公众号,然后才能去申请签名。

    申请微信订阅号注册地址:https://mp.weixin.qq.com/

    在这里插入图片描述
    在这里点击订阅号,一步步操作即可。

    第四步:创建签名

    根据自己的需求选择 国内短信/国际短信 中的签名管理,进行创建签名,当然我这里就直接选择国内了。

    注意:签名类型选择公众号 ,并根据提示上传相关数据。

    在这里插入图片描述

    公众号名称最好注意一点,就像我这样的,上传了也没过,一脸懵逼,从头再来。

    在这里插入图片描述

    第五步:创建短信模板

    根据自己需求创建短信模板,提供了很多标准模板供大家使用,可以自行选择;

    在这里插入图片描述

    一般需要生成随机验证码或者自定义内容时需要加上“{1}”用作占位符:

    在这里插入图片描述

    以上准备工作完成之后我们就要开始进入正文了,也就是我们的代码实现。

    第六步:代码实现

    在我们的maven工程中引入对应的依赖:

    	
    	<dependency>
    		<groupId>com.tencentcloudapigroupId>
    		<artifactId>tencentcloud-sdk-javaartifactId>
    		<version>3.1.390version>
    	dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    要知道腾讯是给我们提供代码的,我们可以在腾讯云上操作既可拿到对应的代码,这部分代码不需要我们自己去编写,每家使用的都不一样,我们只需要怎么操作即可。

    在这里插入图片描述

    在云产品中选择云API

    我们可以测试调用一下,当然啦,结果是显而易见的完全没有问题。
    在这里插入图片描述

    然后我们把生成的代码拷出来即可。

    package com.xiong.austin.script;
    
    import cn.hutool.core.util.IdUtil;
    import com.alibaba.fastjson.JSON;
    import com.google.common.base.Throwables;
    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 com.xiong.austin.pojo.SmsParam;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.stereotype.Service;
    
    /**
     * @author: Xiong
     * @date: 2022/8/2 15:29
     * @修改备注:
     * @修改记录: 修改时间    修改人员    修改原因
     */
    @Service
    @Slf4j
    public class TencentSmsScript {
        /**
         * api相关
         */
        private static final String URL = "sms.tencentcloudapi.com";
        private static final String REGION = "ap-guangzhou";
    
        /**
         * 账号相关 TODO
         */
        private final static String SECRET_ID = "**************";
        private final static String SECRET_KEY = "****************";
        private static final String SMS_SDK_APP_ID = "140*****";
        private static final String TEMPLATE_ID = "149****";
        private static final String SIGN_NAME = "奥斯汀通知";
    
        public String send(SmsParam smsParam) {
            try {
    
                /**
                 * 初始化 client
                 */
                // 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密
                // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
                Credential cred = new Credential(SECRET_ID, SECRET_KEY);
                // 实例化一个http选项,可选的,没有特殊需求可以跳过
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.setEndpoint(URL);
                // 实例化一个client选项,可选的,没有特殊需求可以跳过
                ClientProfile clientProfile = new ClientProfile();
                clientProfile.setHttpProfile(httpProfile);
                // 实例化要请求产品的client对象,clientProfile是可选的
                SmsClient client = new SmsClient(cred, REGION, clientProfile);
    
                /**
                 * 组装发送短信参数
                 */
                SendSmsRequest req = new SendSmsRequest();
                String[] phoneNumberSet1 = smsParam.getPhones().toArray(new String[smsParam.getPhones().size() - 1]);
                req.setPhoneNumberSet(phoneNumberSet1);
                req.setSmsSdkAppId(SMS_SDK_APP_ID);
                req.setSignName(SIGN_NAME);
                req.setTemplateId(TEMPLATE_ID);
                String[] templateParamSet1 = {smsParam.getContent()};
                req.setTemplateParamSet(templateParamSet1);
                req.setSessionContext(IdUtil.fastSimpleUUID());
    
                /**
                 * 请求,返回结果
                 */
                SendSmsResponse resp = client.SendSms(req);
                return SendSmsResponse.toJsonString(resp);
    
            } catch (TencentCloudSDKException e) {
                log.error("send tencent sms fail!{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam));
                return null;
            }
    
        }
    }
    
    
    • 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
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85

    注意上面的参数有需要修改的地方,SECRET_IDSECRET_KEY

    在这里插入图片描述

  • 相关阅读:
    信奥赛一本通题解目录(未做完)
    CMU 15-213 CSAPP. Ch11. Dynamic Memory Allocation
    CVer从0入门NLP(一)———词向量与RNN模型
    成为IEEE学生会员
    跑通CogView教程
    Mac下brew安装php7.4
    基于mbedtls的AES加密(C/C++)
    【C++】详解 eventpp 事件调度程序和回调列表库
    【Web】Ctfshow Nodejs刷题记录
    【JavaSE】文件与IO流
  • 原文地址:https://blog.csdn.net/weixin_42222436/article/details/126134338