基于node.js 实现发送短信功能

1.准备

安装 node.js 下载地址:https://nodejs.org/en/
SubMail赛邮:https://www.mysubmail.com/


目前能找到的门槛极低的第三方服务平台,注册即可免费赠送50条
话不多说先进入服务平台界面控制台

可以看到这里业务还是十分齐全的

接下来创建第一个短信模板

1.点击短信>创建新模板


在创建模板之前需要在平台提供身份证信息进行实名验证
2.将编辑好的短信模板提交审核(审核时间一般会很快在5-10分钟左右)
3.审核成功后

标记的红色文字是该短信模板的唯一表示码
4.创建APPID

5.查看短信余额

新用户注册赠送的50条短信
6.回到首页 找到开发文档
短信API

7.核心代码

封装成4个js文件
confing.js 配置 appid 和appkey

var Config = {mailConfig : {appid: 'your mail appid',appkey: 'your mail appkey',signtype: 'normal'},messageConfig : {appid : 'xxxx', //你的短信appidappkey : 'xxxxx', //app keysigntype : 'normal'}
};module.exports = Config;

message.js 用于发送短信请求

var request = require('request');
var crypto = require('crypto');
var config = require('./config.js');function Message() {this.appid = config.messageConfig.appid;this.signtype = config.messageConfig.signtype;this.appkey = config.messageConfig.appkey;this.send = function(params) {var api = 'https://api.submail.cn/message/send.json';var requestParams = params;requestParams['appid'] = this.appid;var self = this;request({uri: 'https://api.submail.cn/service/timestamp.json',method: 'GET'}, function(error, response, body) {var result = JSON.parse(body);requestParams['timestamp'] = result["timestamp"];requestParams['sign_type'] = self.signtype;requestParams['signature'] = self.createSignature(requestParams);request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {if (err) {return console.error('upload failed:', err);}console.log('Upload successful!  Server responded with:', body);});});};this.xsend = function(params) {var api = 'https://api.submail.cn/message/xsend.json';var requestParams = params;requestParams['appid'] = this.appid;var self = this;request({uri: 'https://api.submail.cn/service/timestamp.json',method: 'GET'}, function(error, response, body) {var result = JSON.parse(body);requestParams['timestamp'] = result["timestamp"];requestParams['sign_type'] = self.signtype;requestParams['signature'] = self.createSignature(requestParams);request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {if (err) {return console.error('upload failed:', err);}console.log('Upload successful!  Server responded with:', body);});});};this.subscribe = function(params) {var api = 'https://api.submail.cn/addressbook/message/subscribe.json';var requestParams = params;requestParams['appid'] = this.appid;var self = this;request({uri: 'https://api.submail.cn/service/timestamp.json',method: 'GET'}, function(error, response, body) {var result = JSON.parse(body);requestParams['timestamp'] = result["timestamp"];requestParams['sign_type'] = self.signtype;requestParams['signature'] = self.createSignature(requestParams);request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {if (err) {return console.error('upload failed:', err);}console.log('Upload successful!  Server responded with:', body);});});};this.unsubscribe = function(params) {var api = 'https://api.submail.cn/addressbook/message/unsubscribe.json';var requestParams = params;requestParams['appid'] = this.appid;var self = this;request({uri: 'https://api.submail.cn/service/timestamp.json',method: 'GET'}, function(error, response, body) {var result = JSON.parse(body);requestParams['timestamp'] = result["timestamp"];requestParams['sign_type'] = self.signtype;requestParams['signature'] = self.createSignature(requestParams);request.post({url: api, formData: requestParams}, function optionalCallback(err, httpResponse, body) {if (err) {return console.error('upload failed:', err);}console.log('Upload successful!  Server responded with:', body);});});};this.createSignature = function(params) {if (this.signtype == 'normal') {return this.appkey;} else {return this.buildSignature(params);}};this.buildSignature = function(params) {var sortedParams = this.sortOnKeys(params);var signStr = "";for(var key in sortedParams) {signStr += key + '=' + sortedParams[key] + '&';}signStr = signStr.substring(0, signStr.length-1);signStr = this.appid + this.appkey + signStr + this.appid + this.appkey;if (this.signtype == 'md5') {var md5sum = crypto.createHash('md5');md5sum.update(signStr);return md5sum.digest('hex');}if (this.signtype == 'sha1') {var sha1sum = crypto.createHash('sha1');sha1sum.update(signStr);return sha1sum.digest('hex');}return '';};this.sortOnKeys = function(dict) {var sorted = [];for(var key in dict) {if (key == 'attachments') {continue;}sorted[sorted.length] = key;}sorted.sort();var tempDict = {};for(var i = 0; i < sorted.length; i++) {tempDict[sorted[i]] = dict[sorted[i]];}return tempDict;};
};module.exports = Message;

messageXSend.js 创建短信发送类

var Message = require('./message.js');function MessageXSend() {this.to = [];this.to_name = [];this.addressbook = [];this.project = '';this.vars = {};// set emailthis.add_to = function(address) {this.to.push(address);};this.add_to_name = function(name) {this.to_name.push(name);};this.add_addressbook = function(addressbook) {this.addressbook.push(addressbook);};this.set_project = function(project) {this.project = project;};this.add_var = function(key, val) {this.vars[key] = val;};this.build_params = function() {var params = {};if (this.to.length > 0) {var toValue = '';for (index in this.to) {var name = ''if (this.to_name[index] != undefined) {name = this.to_name[index];}toValue += name + '<' + this.to[index] + '>,';}params['to'] = toValue.substring(0, toValue.length-1);}if (this.addressbook.length > 0) {var addressbookValue = '';for (index in this.addressbook) {addressbookValue += this.addressbook[index] + ',';}params['addressbook'] = addressbookValue.substring(0, addressbookValue.length-1);}if (this.project != '') {params['project'] = this.project;}if (Object.keys(this.vars).length > 0) {params['vars'] = JSON.stringify(this.vars);}return params;};this.xsend = function() {var message = new Message();message.xsend(this.build_params());}
};module.exports = MessageXSend;

messageXTools.js 发送短信的入口文件

var MessageXSend = require('./messageXSend.js');
var messageXSend = new MessageXSend();function validateSMS(phone) {let number = Math.floor(Math.random() * 9000) + 1000; //每次执行生成随机的4位验证码messageXSend.add_to(15008373616); //发送短信的手机号messageXSend.set_project('yy6LN3'); //短信模板ID 在短信模板中可看到messageXSend.add_var('code', number); //短信验证码messageXSend.xsend();return number;
}

node.js 执行发送

发送成功
sms_credits表示还剩下多少次数
收到的短信

好啦一个基于node.js的短信验证发送就实现了
如果还想进一步实现通过点击登录/注册按钮来实现短信发送只需要将messageXTools.js简单修改一下即可

var MessageXSend = require('./messageXSend.js');
var messageXSend = new MessageXSend();function validateSMS(phone) {let number = Math.floor(Math.random() * 9000) + 1000;messageXSend.add_to(phone);messageXSend.set_project('yy6LN3');messageXSend.add_var('code', number);messageXSend.xsend();return number;
}module.exports = validateSMS

编写一个后台接口 code.js

let express = require('express')
let router = express.Router()
let sendCode = require('../code/messageXTools') //请求短信 发送模块的js//短信 coderouter.post('/code',(req,res)=>{  res.json({msg:"成功",code:sendCode(req.body.tel)//前台请求成功后返回的验证码})})module.exports = router

通过页面点击按钮发送请求 小编这里是用的是(React写的一个项目)fetch请求

   fetch('/create',{method:'post', headers: {"Content-Type":"application/json"},               body:JSON.stringify({users:this.refs.tel.value,password:this.refs.pass.value,money:Math.floor(Math.random()*100)})}).then(req=>req.json()).then(data=>{console.log(data.code) //后台返回的验证码})


点击按钮获取短信验证码

页面输出请求的结果 code 就是发送的验证码
收到的短信

好了一个基本的短信验证功能就实现了

有任何问题欢迎留言哦

node.js 实现发送短信功能相关推荐

  1. 【短信发送】实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现

    实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现 一.开通腾讯云短信服务 二.工具类--使用qcloudsms实现短信发送 三.Spring Boot项目引入短信发送功能 我们发 ...

  2. TP5调用阿里云短信接口实现发送短信功能

    TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...

  3. 实现 Java 发送短信功能

    前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信业务,比如注册.验证码功能.还 ...

  4. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  5. php可以发短信的代码,PHP代码函数实现PHP发送短信功能

    //PHP代码函数实现PHP发送短信功能 //本代码基于开心洋葱 运行 //代码来源:开心洋葱 //PHP发送短信开心洋葱专用(PHP代码函数) //本代码基于开心洋葱 运行 //代码来源:开心洋葱 ...

  6. android 发短信意图,android代码实现打电话和发送短信功能

    android代码实现打电话和发送短信功能 发布时间:2020-05-27 11:57:17 来源:亿速云 阅读:172 作者:鸽子 1.XML布局 xmlns:app="http://sc ...

  7. 7 分钟实现 Java 发送短信功能!

    阅读文本大概需要 7 分钟. 前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信 ...

  8. html发送短信倒计时,js实现5秒倒计时重新发送短信功能

    本文实例讲述了js实现倒计时重新发送短信验证码功能的方法.分享给大家供大家参考,具体如下: js-手机发送短信倒计时 button{ width: 100px; height: 30px; borde ...

  9. Freeswitch服务+语音网关设备发送短信功能

    本文档主要介绍的是发送短信的场景.语音通讯后续补充. 业务场景:由于产品部署在视频网.或者公安网这种内部网络,无法使用互联网,发送短信提醒的实现方案有两种 一种是是使用短信猫设备,插入手机卡,调用短信 ...

  10. 个人永久性免费-Excel催化剂功能第85波-灵活便捷的批量发送短信功能(使用腾讯云接口)...

    微信时代的今天,短信一样不可缺席,大系统都有集成短信接口. 若只是临时用一下,若能够直接在Excel上加工好内容就可以直接发送,这些假设在此篇批量群发短信功能中都为大家带来完美答案. 业务场景 不多说 ...

最新文章

  1. Rails字符集问题
  2. 激活函数 activation function
  3. Linux生成随机字符串
  4. 禁止sethc.exe运行 防止3389的sethc后门
  5. 【搜索/推荐排序】FM,FFM,AFM,PNN,DeepFM:进行CTR和CVR预估
  6. MySQL 分页优化中的 “ INNER JOIN方式优化分页算法 ” 到底在什么情况下会生效?
  7. 《海外社交媒体营销》一一2.2 根据你的公司特点,制订适合自己的营销计划...
  8. java textvaluechanged 全选删除不触发_js动态改变input的值不触发input的change事件的解决办法...
  9. (1)安装vagrant和virtualbox
  10. 线程同步机制的区别与比较及进程通信方法
  11. 单变量求解C语言,二分法求解单变量非线性方程及其应用与实现.doc
  12. win7win8 64位汇编开发环境合集安装与设置
  13. 安装C4D步骤 附加一大波C4D序列号
  14. 多核处理器_胶水多核等于Low?处理器封装没有那么简单!
  15. 阿尔伯塔大学 计算机科学,阿尔伯塔大学
  16. excel单元格下拉选项怎么设置_使用Excel制作搜索式下拉菜单,让你不再烦恼下拉选项多内容...
  17. python,时间的四种格式
  18. 拨乱反正-重构是门艺术活
  19. html菜鸟教程 动态天气,Blinker 天气时钟8266 12864LCD屏(针对新版库v0.3.4接口更新)...
  20. 已知图片在服务器的路径,下载到本地

热门文章

  1. python ascii codec cant encode_Python3 出现ascii codec cant encode characters问题
  2. HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求
  3. android+kitchen最新优化版下载,Mochus Kitchen(外语学习)
  4. 计算机网络中选择最佳路由,计算机网络路由研究综述
  5. 【菜鸟学习论文】Parallax Attention for Unsupervised Stereo Correspondence Learning
  6. 手把手教你在Vivado创建一个PLL或MMCM的IP核(超详细)
  7. 反思我们的学习——从c++课不理想的成绩说起
  8. Vue3第十篇:后台管理系统-页面基本布局
  9. 换坑季-51Job前程无忧 Python爬虫
  10. 深度学习中RNN、LSTM、GRU等循环神经网络的介绍