当前位置: 首页 > article >正文

node.js实现阿里云短信发送

效果图

实现

一、准备工作

1、官网直达网址:

阿里云 - 短信服务

2、按照首页提示依次完成相应资质认证短信模板审核;

3、获取你的accessKeySecretaccessKeyId

方法如下:

获取AccessKey-阿里云帮助中心

4、获取SignName(签名名称)和 TemplateCode(模板code)

二、代码实现

1、项目结构

【/config/index.js】=》参数配置文件

【/server/index.js】=》主执行文件

【node server】=》启动命令

2、引入依赖

在项目根目录,打开控制台,输入如下命令:

npm install @alicloud/sms-sdk --save

3、 修改配置文件【/config/index.js】

储存前面获取的参数:

const config = {

    // AccessKey ID
    accessKeyId: "XXXXXXXXXXXXXXXXXXXXXXXXXX",

    // AccessKey Secret
    secretAccessKey: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",

    // 签名名称
    signName: "XXXX",

    // 模板CODE => 登录/注册 - 验证码
    templateCode_login: "SMS_4XXXXXXXX",

}

module.exports = config

4、修改主启动文件【/server/index.js】 

实现发送短信:

// 引入依赖
const SMSClient = require('@alicloud/sms-sdk')
// 参数配置文件
const config = require('../config/index.js')

/**
 * 发送短信验证码
 * @param phone 接收用户的手机号
 */
function sendSmsMessage (phone) {

    // 参数配置 sms_client
    let accessKeyId = config.accessKeyId // AccessKey ID
    let secretAccessKey = config.secretAccessKey // AccessKey Secret
    let signName = config.signName // 签名名称
    let templateCode = config.templateCode_login // 短信模板code

    // 发送对象及验证码
    let verify = Math.random().toString().slice(-6) // 随机6位验证码
    let phoneNum = phone // 手机号

    // 初始化 sms_client
    const smsClient = new SMSClient({accessKeyId, secretAccessKey})

    // 发送短信
    smsClient.sendSMS({
        PhoneNumbers: phoneNum, // 发送对象手机号
        SignName: signName, // 签名名称
        TemplateCode: templateCode, // 模版CODE
        TemplateParam: `{"code":'${verify}'}`, // 短信模板变量对应的实际值,JSON格式
    }).then(res => {
        console.log("发送短信sendSmsMessage执行完成:")
        console.log(res)

        // 判断是否发送成功
        if(res.Code === 'OK') {
            console.log('短信发送成功!')
        } else {
            console.log('短信发送失败!')
            console.log(res.Message)
        }
    }).catch(err => {
        console.log("发送短信sendSmsMessage异常错误:")
        console.log(err)
    })
}

sendSmsMessage('13512341234')

5、控制台打印结果


http://www.kler.cn/a/299847.html

相关文章:

  • C语言编译过程全面解析
  • Excel制作合同到期自动提醒!
  • Oracle查看数据库表空间使用情况
  • 参数是模型学会的东西,预训练是让它学习的东西
  • 算法中的移动窗帘——C++滑动窗口算法详解
  • C语言自定义数据类型详解(一)——结构体类型(上)
  • Android之LiveTemplate注释模板
  • 基于云原生向量数据库 PieCloudVector 的 RAG 实践
  • 面试官:说说你对keep-alive的理解是什么?
  • vue element时间选择不能超过今天 时间选中长度不能超过7天
  • 动手学深度学习(pytorch土堆)-02TensorBoard的使用
  • 防患于未然,智能监控新视角:EasyCVR视频平台在高校安全防控中的关键角色
  • Azure OpenAI models being unable to correctly identify model
  • [001-03-007].第26节:分布式锁迭代3->优化基于setnx命令实现的分布式锁-防锁的误删
  • openharmony 应用支持常驻和自启动
  • Web安全之XSS跨站脚本攻击:如何预防及解决
  • 2024年最新版Ajax+Axios 学习【包含原理、Promise、报文、接口等...】
  • SVN下载安装使用方法
  • 蓝牙也会更新?新功能有这些便捷之处
  • 探索电商系统的新篇章:卷轴模式系统开发的创新与实践
  • 【C语言】选择排序及优化、冒泡排序、计数排序的实现
  • Python 工厂模式:构建灵活软件架构的秘密武器
  • HTML5中`<ul>`标签深入全面解析
  • JS面试真题 part3
  • 校园水电费管理|基于java的校园水电费管理小程序系统 (源码+数据库+文档)
  • 探索Oracle数据库的多租户特性:架构、优势与实践