如何利用node实现发送QQ邮箱验证码
作者:菜鸟入坑 发布时间:2024-05-11 09:49:15
标签:node,qq邮箱,验证码
开通QQ邮箱POP3/SMTP服务
登录QQ邮箱网址,进入设置选择账户tab页翻到最低下开启此服务
获取qq邮箱授权码
搭建node接口服务
思路
创建index.js文件
安装connect、body-parser、nodemailer模块
编写引入connect框架
编写引入bodyParser模块
引入nodemailer模块
开始安装插件
使用cmd命令提示或者Git一次执行以下安装命令
开始编写index.js文件程序
引入各个模块
let connect = require('connect'), // 引入connect模块
bodyParser = require('body-parser'), // 引入body-parser解析模块
nodemailer = require('nodemailer'); // 引入nodemailer模块
声明并定于发送邮件函数
async function sendMail(text,receive) {
let user = "703669046@qq.com";//自己的邮箱
let pass = "sfsdfsdfsggxcew"; //qq邮箱授权码
let to = `${receive}@qq.com`; //对方的邮箱
let transporter = nodemailer.createTransport({
host: "smtp.qq.com",
port: 587,
secure: false,
auth: {
user: user, // 用户账号
pass: pass, //授权码,通过QQ获取
},
});
let info = await transporter.sendMail({
from: `测试node发送邮箱<${user}>验证码`, // sender address
to: `测试验证码<${to}>`, // list of receivers
subject: "测试验证码", // Subject line
text: text, // plain text body
});
}
编写connect、body-parser解析模块
var app = connect()
.use(bodyParser.json()) //JSON解析
.use(bodyParser.urlencoded({ extended: true }))
//use()方法还有一个可选的路径字符串,对传入请求的URL的开始匹配。
//use方法来维护一个中间件队列
跨域请求设置
.use(function (req, res, next) {
//跨域处理
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', '*'); //允许任何源
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); //允许任何方法
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', '*'); //允许任何类型
res.writeHead(200, { "Content-Type": "text/plain;charset=utf-8" }); //utf-8转码
next(); //next 方法就是一个递归调用
})
编写发送qq邮箱验证码接口
.use('/emails', function (req, res, next) {
let qqEmail= req.body.email;
var obj = {
code:Math.ceil(Math.random()*1000)
};
let text=`验证码:${obj.code}.您正在使用登录功能,验证码提供他人可能导致账号被盗,请勿转发或泄漏`
sendMail(text,qqEmail)
res.end(JSON.stringify(obj))
next();
})
设置端口
在var app = connect()后面接上
.listen(3331);
启动node服务
在index.js当前文件下开启cmd命令提示符或者Git命令框执行node index.js
命令
前端模块
我是使用vue-cli+elementui
html代码部分
<template>
<div>
<el-form
:model="ruleForm"
status-icon
ref="ruleForm"
label-width="100px"
class="demo-ruleForm"
>
<el-form-item label="QQ" prop="email">
<el-input type="email" v-model="ruleForm.email" autocomplete="off"></el-input>
<el-button @click="handleCode">获取验证码</el-button>
</el-form-item>
<el-form-item label="验证码" prop="code">
<el-input v-model.number="ruleForm.code"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</div>
</template>
效果图
js请求代码部分
import ajax from '../../utli/request'
export const getCheckCode = param => ajax.$post('/emails', param || {});
js事件部分
<script>
import {getCheckCode} from './api/form'
export default {
data() {
return {
ruleForm: {
email: "",
checkPass: "",
code: ""
},
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
alert("submit!");
} else {
console.log("error submit!!");
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
async handleCode(){
let params= {
email:this.ruleForm.email
}
let res = await getCheckCode(params);
if(res.state==200){
console.log(res)
}
}
}
};
</script>
发送qq验证给用户
成功收到邮箱验证码
来源:https://juejin.cn/post/7085698172571353095


猜你喜欢
- Inside君整理了一份最新基于MySQL 5.6和5.7的配置文件模板,基本上可以说覆盖90%的调优选项,用户只需根据自己的服务器配置稍作
- 本文记录了windows下python的安装,供大家参考,具体内容如下—–因为我是个真小白,网上的大多入门教程并不适合我这种超级超级小白,有
- 有些时候,我们需要画图后的二进制数据流,matplotlib没有提供相关的api,通过源码查看与百度,得到下面此方法import matpl
- startswith()方法Python startswith() 方法用于检查字符串是否是以指定子字符串开头如果是则返回 True,否则返
- 1. 问题描述输入一个字符串然后对其进行逆序输出第一种方式:字符串切片第二种方式:使用循环转换然后逆序输出比如:输入字符串'hell
- 1、sqldmo SQLDMO是操作SQLServer的理想的方式,如果您的数据库是SQLServer就可以考虑使用这种方式。在C#中使用S
- 背景今天在工作中,同事遇到一个上传图片的问题:系统要求的图片大小不能超过512KB。但是同事又有很多照片。这要是每一个照片都用ps压缩的话,
- 一、遍历函数(map)map函数用于遍历序列,对序列中每个元素进行操作,最终获取新的序列。lis=[2,3,4,5]new_list=map
- 文字链接可以说是网页中最常见的页面元素了,默认的文字链接样式都是带下划线的效果,这种一陈不变的外观可能使很多朋友都想改变它,以使之符合页面的
- 自动化测试执行过程中,难免会有错误/异常出现,比如测试脚本没有发现对应元素,则会立刻抛出NoSuchElementException异常。这
- Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,
- 1、什么是数据库连接池就是一个容器持有多个数据库连接,当程序需要操作数据库的时候直接从池中取出连接,使用完之后再还回去,和线程池一个道理。2
- 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本要求:1. 基本的增删改查功能2. 基于对象的权限控制(如:
- 背景需要在文件夹中搜索某一文件,找到后返回此文件所在目录。用最常规的os.listdir()方式实现了一版,但执行时报错:递归超过最大深度。
- 前言近几年,制造业作为国民经济主体,是国家创造力、竞争力和综合国力的重要体现。作为制造强国建设的主攻方向,可以说,智能制造发展水平关乎我国未
- 在实际开发过程中,对数据库的操作无非就“增删改查”。就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯
- 一,元祖(tuple)1.元祖是不能修改的,通常写成圆括号中的一系列项,位置有序,固定长度2.实际上元祖支持字符串和列表的一般序列操作,“+
- el-col-group"el-col-group" 是一个 Vue.js 函数式组件,允许您在 "el-ta
- 一、python的基础语法1.行连接的方法是最后加上一个‘\'2.注释:多行注释三引号,#行注释;三引号定义的字符串原样输出(保存原
- 将电话簿TeleAddressBook.txt和电子邮件EmailAddressBook.txt合并为一个完整的AddressBook.tx