如何利用node实现发送QQ邮箱验证码

 更新时间:2022年04月14日 14:15:36   作者:菜鸟入坑  
我们在开发网站时,发送验证码的功能是必定会遇到的,下面这篇文章主要给大家介绍了关于如何利用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验证给用户

成功收到邮箱验证码

总结

到此这篇关于如何利用node实现发送QQ邮箱验证码的文章就介绍到这了,更多相关node发送QQ邮箱验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node.js+Ajax实现获取HTTP服务器返回数据

    node.js+Ajax实现获取HTTP服务器返回数据

    这篇文章主要介绍了node.js+Ajax实现获取HTTP服务器返回数据,讲解的十分详细,也给出了很多的实例,是篇非常不错的文章,这里推荐给大家。
    2014-11-11
  • 利用nodejs读取图片并将二进制数据转换成base64格式

    利用nodejs读取图片并将二进制数据转换成base64格式

    这篇文章主要介绍了利用nodejs读取图片并将二进制数据转换成base64格式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Nodejs封装类似express框架的路由实例详解

    Nodejs封装类似express框架的路由实例详解

    在本篇文章里小编给大家整理的是关于Nodejs封装类似express框架的路由实例内容,有需要的朋友们学习下。
    2020-01-01
  • Node.js添加API限流与日志优化详解

    Node.js添加API限流与日志优化详解

    这篇文章主要介绍了Node.js添加API限流与日志优化的相关资料,以增强API的稳定性和可维护性,API限流功能可以防止恶意请求和DDoS攻击,优化后的日志记录系统则可以帮助我们更好地跟踪和调试应用,快速定位问题,需要的朋友可以参考下
    2024-11-11
  • npm国内镜像 安装失败的几种解决方案

    npm国内镜像 安装失败的几种解决方案

    这篇文章主要给大家总结了npm国内镜像npm安装失败的几种解决方案,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下来一起看看吧。
    2017-06-06
  • Node.js 服务器端应用开发框架 -- Hapi.js

    Node.js 服务器端应用开发框架 -- Hapi.js

    Hapi.js 是一个用来构建基于 Node.js 的应用和服务的富框架,使得开发者把重点放在便携可重用的应用逻辑而不是构建架构。内建输入验证、缓存、认证和其他 Web 应用开发常用的功能。
    2014-07-07
  • 浅谈Node.js ORM框架Sequlize之表间关系

    浅谈Node.js ORM框架Sequlize之表间关系

    下面小编就为大家带来一篇浅谈Node.js ORM框架Sequlize之表间关系。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • NodeJS实现一个聊天室功能

    NodeJS实现一个聊天室功能

    这篇文章主要介绍了NodeJS实现一个聊天室功能,本文实例截图相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • vscode调试node.js的实现方法

    vscode调试node.js的实现方法

    这篇文章主要介绍了vscode调试node.js的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • NPM命令运行报错:npm v10.2.4 is known not to run on Node.js v14.21.1解决办法

    NPM命令运行报错:npm v10.2.4 is known not to run on Node.js

    这篇文章主要给大家介绍了关于NPM命令运行报错:npm v10.2.4 is known not to run on Node.js v14.21.1的解决办法,文中将解决办法介绍的非常详细,需要的朋友可以参考下
    2024-01-01

最新评论