腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断(上)

腾讯云短信+三种实现发送短信的方法

前提准备:

  1. 腾讯云账号
  2. 新用户领取200条免费短信腾讯云短信SMS
  3. 登录账号进入短信的控制台进行创建 签名和正文模板,根据提示进行创建
  4. 不会理解签名和正文模板的签名正文模板

这是我的正文模板: 您的验证码为:{1},该验证码{2}分钟内有效,请勿泄漏于他人!
在这里插入图片描述

  1. 有了签名和正文模板后,需要准备这些参数(这是在有了前面两个东西之后)

以上为前提准备,没有准备好先去准备

第一种,使用api接口发送短信

  • 这一种是最基本的调用接口的方式,就不具体附代码了,下面放上访问接口的基本参数
  • 接口请求域名: sms.tencentcloudapi.com
  • 请求方式:post
  • 请求参数(以下我标注红色是一些必选项或可能要传递的参数):
参数名称必选类型描述
ActionString公共参数,本接口取值:SendSms。
VersionString公共参数,本接口取值:2019-07-11。
RegionString公共参数,本接口不需要传递此参数。
PhoneNumberSet.NArray of String下发手机号码,采用 e.164 标准,格式为+[国家或地区码][手机号],单次请求最多支持200个手机号且要求全为境内手机号或全为境外手机号。例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号。
TemplateIDString模板 ID,必须填写已审核通过的模板 ID。模板ID可登录 短信控制台 查看,若向境外手机号发送短信,仅支持使用国际/港澳台短信模板。
SmsSdkAppidString短信SdkAppid在 短信控制台 添加应用后生成的实际SdkAppid,示例如1400006666。
SignString短信签名内容,使用 UTF-8 编码,必须填写已审核通过的签名,签名信息可登录 短信控制台 查看。注:国内短信为必填参数。
TemplateParamSet.NArray of String模板参数,若无模板参数,则设置为空。
ExtendCodeString短信码号扩展号,默认未开通,如需开通请联系 sms helper。
SessionContextString用户的 session 内容,可以携带用户侧 ID 等上下文信息,server 会原样返回。
SenderIdString国内短信无senderid,无需填写该项;若需开通国际/港澳台短信senderid,请联系smshelper。

请求示例

https://sms.tencentcloudapi.com/?Action=SendSms
&PhoneNumberSet.0=+8618511122233
&PhoneNumberSet.1=+8618511122266
&TemplateID=1234
&Sign=腾讯云
&TemplateParamSet.0=12345
&SmsSdkAppid=1400006666
&SessionContext=test
&<公共请求参数>
  • 响应(输出)参数:
参数名称类型描述
SendStatusSetArray of SendStatus短信发送状态。
RequestIdString唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

成功响应示例

{
  "Response": {
    "SendStatusSet": [
      {
        "SerialNo": "5000:1045710669157053657849499619",
        "PhoneNumber": "+8618511122233",
        "Fee": 1,
        "SessionContext": "test",
        "Code": "Ok",
        "Message": "send success",
        "IsoCode": "CN"
      },
      {
        "SerialNo": "5000:104571066915705365784949619",
        "PhoneNumber": "+8618511122266",
        "Fee": 1,
        "SessionContext": "test",
        "Code": "Ok",
        "Message": "send success",
        "IsoCode": "CN"
      }
    ],
    "RequestId": "a0aabda6-cf91-4f3e-a81f-9198114a2279"
  }
}

第二种,使用Node SDK 2.0发送

下面是我总结的四步骤:

  1. 第一步下载模块 npm install qcloudsms_js
  2. 第二步 引入模块,给相应的参数{SDK的appid、appkey(实例化QcloudSms)、手机号、签名内容}
  3. 第三步生成六位验证码
  4. 第四步调用sendWithParam发送短信

这里有官方示例以及2.0文档:官方示例2.0文档

放上代码

/*
* @fileName: sendNote
* @author: LG
* @date: 2020/12/7 8:21
* @description:测试发送短信
* @update: 2020/12/7 8:21
*/

/**
 * 腾讯云短信 Node.js SDK 2.0
 * 最近更新时间2020-09-23 17:15:17
 * 1. qcloudsms_js采用npm进行安装,要使用qcloudsms功能,只需要执行:
 * npm install qcloudsms_js
 */
//引入qcloudsms_js模块
const QcloudSms = require('qcloudsms_js');
//短信应用SDK appid   (number类型)
var appid = 14xxxxxxx;
//短信应用SDK appkey (字符串类型)
var appkey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
//实例化QcloudSms
var qcloudsms = QcloudSms(appid, appkey);
//需要发送短信的手机号
 var phoneNumbers = ['',''];
//短信模板的id (number类型)
var templateId = xxxxxx;
//签名 (字符串)
var smsSign = 'xxx';

// 设置请求回调处理, 这里只是演示,用户需要自定义相应处理回调
 function callback(err, res, resData) {
     if (err) {
         console.log("err: ", err);
     } else {
         console.log("request data: ", res.req);
         console.log("response data: ", resData);
     }
 }

//生成n位验证码
function RndNum(n) {
    var rnd = "";
    for (var i = 0; i < n; i++)
        rnd += Math.floor(Math.random() * 10);
    return rnd;
}

//六位验证码
var VerificationCode = RndNum(6);

var ssender = qcloudsms.SmsSingleSender();
//短信模板的参数
var params = [VerificationCode, "2"];

/**
 * 参数详情
 * 第一个nationCode(字符串):国家拨号代码,例如中国为86,美国为1
 * 第二个phoneNumber(字符串):电话号码
 * 第三个tempId(数字型):模板编号ID
 * 第四个params(数组):模板中的参数的数组
 * 第五个sign(字符串):签名内容
 * 第六个extend(字符串):扩展字段,默认为空
 * 第七个ext(字符串):内容将按原样由服务器返回
 * 第八个callback(函数):回调函数,发送成功/失败后触发的函数
 */

 ssender.sendWithParam("86", phoneNumbers[0], templateId, params, smsSign, "", "", callback);  
 // 签名参数未提供或者为空时,会使用默认签名发送短信

最后执行node xxxx运行
如果调用成功会响应一个OK,失败的话会给你提示哪里有错
在这里插入图片描述

第二种Node SDK3.0发送短信

  1. Node SDK2.0和Node SDK3.0的区别:

    • Node SDK 3.0 通过tencentcloud-sdk-nodejs模块实现:新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,错误码相同以及返回包格式相同等优点。
    • 本质上没什么区别,用哪个都行,SDK2.0也在维护中
  2. 已准备依赖环境:NODEJS 7.10.1 及以上版本。

  3. 我总结的发送短信的必要步骤:

  • 第一步 下载模块 tencentcloud-sdk-nodejs
  • 第二步 导入对应产品模块client models
  • 第三步 配置client配置(密钥id、密钥key、可选配置),实例化sms的client对象
  • 第四步生成六位验证码
  • 第五步 请求参数(手机号、模板参数、模板id、appid、签名内容)
  • 第六步 调用client.SendSms发送短信
  1. 官方文档github使用地址
  2. 下面是代码:
/*
 * @fileName: sendNote2
 * @author: LG
 * @date: 2020/12/7 13:41
 * @description:sendNote2
 * @update: 2020/12/7 13:41
 */
/**
 * SDK 3.0是云 API 3.0平台的配套工具,您可以通过 SDK 使用所有 短信 API。新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,错误码相同以及返回包格式相同等优点。
 */
// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");
//导入对应产品模块的client models
const SmsClient = tencentcloud.sms.v20190711.Client;

/* SDK 会自动指定域名,通常无需指定域名,但访问金融区的服务时必须手动指定域名
 * 例如 SMS 的上海金融区域名为 sms.ap-shanghai-fsi.tencentcloudapi.com *
 * 第二个参数是地域信息,可以直接填写字符串 ap-guangzhou,或者引用预设的常量 */
const clientConfig = {
  //腾讯云认证信息
  credential: {
    secretId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    secretKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  },
  //产品地域
  region: "",
  //可选配置实例
  profile: {
    httpProfile: {
      endpoint: "sms.tencentcloudapi.com",
    },
  },
};
//实例化要请求产品的client对象
//实例化 SMS 的 client 对象
const client = new SmsClient(clientConfig);

//生成n位验证码
function RndNum(n) {
  var rnd = "";
  for (var i = 0; i < n; i++) rnd += Math.floor(Math.random() * 10);
  return rnd;
}

//五位验证码
var VerificationCode = RndNum(6);
/**
 * 参数说明
 * !! SmsSdkAppid  短信应用 ID:在 [短信控制台] 添加应用后生成的实际 SDKAppID,例如1400006666
 * !! Sign 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名,可登录 [短信控制台] 查看签名信息
 * ExtendCode   短信码号扩展号: 默认未开通,如需开通请联系 [sms helper]
 * SenderId 国际/港澳台短信 senderid: 国内短信填空,默认未开通,如需开通请联系 [sms helper]
 * SessionContext  用户的 session 内容: 可以携带用户侧 ID 等上下文信息,server 会原样返回
 * PhoneNumberSet 下发手机号码,采用 e.164 标准,+[国家或地区码][手机号] 最多不要超过200个手机号
 * TemplateID   模板 ID: 必须填写已审核通过的模板 ID,可登录 [短信控制台] 查看模板 ID
 *  TemplateParamSet  模板参数: 若无模板参数,则设置为空
 */
const params = {
  PhoneNumberSet: ["+86xxxxxxxxxx"],
  TemplateParamSet: [VerificationCode, "5"],
  TemplateID: "xxxxxx",
  SmsSdkAppid: "14xxxxxxxxxxx",
  Sign: "xxxxxxx",
};
// 通过 client 对象调用想要访问的接口,需要传入请求对象以及响应回调函数

client.SendSms(params).then(
  (data) => {
    console.log(data);
  },
  (err) => {
    console.error("error", err);
  }
);

最后执行node xxxx运行
如果调用成功会响应一个OK,失败的话会给你提示哪里有错。

到这里结束了,基本发送短信的方法已经详解,下篇说封装短信工具,搭建web服务,写接口,时效性,调用接口发送

收藏、点赞呗

更多推荐:wantLG的《普歌-腾讯云短信+使用node发送短信(3种方法API、SDK)、封装工具、搭建web服务、写接口、调用接口发送短信、时效性判断(下)


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Spring Boot项目中使用腾讯云发送短信,你可以按照以下步骤进行操作: 1. 首先,在腾讯云控制台上申请短信服务并获取相关的密钥信息,包括AppID、AppKey和模板ID等。 2. 在Spring Boot项目的pom.xml文件中添加腾讯云SDK的依赖,例如: ```xml <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>sms</artifactId> <version>3.1.40</version> </dependency> ``` 3. 创建一个发送短信工具类,可以使用腾讯云提供的Java SDK,示例代码如下: ```java import com.tencentcloudapi.common.Credential; import com.tencentcloudapi.common.profile.ClientProfile; import com.tencentcloudapi.common.profile.HttpProfile; import com.tencentcloudapi.sms.v20190711.SmsClient; import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest; import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse; public class TencentCloudSmsUtil { private final static String SECRET_ID = "your_secret_id"; private final static String SECRET_KEY = "your_secret_key"; private final static String REGION_ID = "ap-guangzhou"; private final static String SMS_SIGN = "your_sms_sign"; // 短信签名,需要在腾讯云控制台申请 public static void sendSms(String phoneNumber, String templateParam) { try { Credential cred = new Credential(SECRET_ID, SECRET_KEY); HttpProfile httpProfile = new HttpProfile(); httpProfile.setEndpoint("sms.tencentcloudapi.com"); ClientProfile clientProfile = new ClientProfile(); clientProfile.setHttpProfile(httpProfile); SmsClient client = new SmsClient(cred, REGION_ID, clientProfile); SendSmsRequest req = new SendSmsRequest(); req.setSmsSdkAppid("your_appid"); // 在腾讯云控制台申请的短信SDK AppID req.setSign(SMS_SIGN); req.setTemplateID("your_template_id"); // 在腾讯云控制台申请的短信模板ID req.setPhoneNumberSet(new String[]{phoneNumber}); req.setTemplateParamSet(new String[]{templateParam}); SendSmsResponse res = client.SendSms(req); System.out.println(SendSmsResponse.toJsonString(res)); } catch (Exception e) { e.printStackTrace(); } } } ``` 4. 在需要发送短信的地方调用工具类的`sendSms`方法,传入手机号和短信模板参数即可: ```java TencentCloudSmsUtil.sendSms("your_phone_number", "your_template_param"); ``` 注意替换代码中的`your_secret_id`、`your_secret_key`、`your_sms_sign`、`your_appid`和`your_template_id`为你自己的相关信息。 这样就可以在Spring Boot项目中使用腾讯云发送短信了。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值