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

作者:菜鸟入坑 时间:2024-05-11 09:49:15 

开通QQ邮箱POP3/SMTP服务

登录QQ邮箱网址,进入设置选择账户tab页翻到最低下开启此服务

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

获取qq邮箱授权码

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

搭建node接口服务

思路

  • 创建index.js文件

  • 安装connect、body-parser、nodemailer模块

  • 编写引入connect框架

  • 编写引入bodyParser模块

  • 引入nodemailer模块

开始安装插件

使用cmd命令提示或者Git一次执行以下安装命令

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

开始编写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>

效果图

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

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邮箱验证码

来源:https://juejin.cn/post/7085698172571353095

标签:node,qq邮箱,验证码
0
投稿

猜你喜欢

  • Python文件操作函数用法实例详解

    2021-03-12 07:10:29
  • Django自定义用户认证示例详解

    2022-02-03 01:31:18
  • JavaScript高级程序设计 读书笔记之十 本地对象Date日期

    2024-04-22 22:33:48
  • 动态加载JS文件的三种方法

    2024-05-21 10:14:28
  • Golang中goroutine和channel使用介绍深入分析

    2023-07-07 16:51:48
  • python实现ftp文件传输功能

    2023-04-21 13:20:16
  • 关于页面刷新,事件重复提交的方法分享

    2023-07-06 06:50:03
  • vuex中...mapstate和...mapgetters的区别及说明

    2023-07-02 16:33:53
  • python属于哪种语言

    2022-05-30 18:20:07
  • xhEditor的异步载入实现代码

    2022-01-29 10:40:28
  • python使用selenium打开chrome浏览器时带用户登录信息实现过程详解

    2023-07-19 05:00:37
  • 阿里巴巴中秋节logo设计的艰辛曲折过程

    2008-09-11 17:15:00
  • Python面向对象类编写细节分析【类,方法,继承,超类,接口等】

    2023-01-01 11:23:13
  • Windows 安装 Anaconda3+PyCharm的方法步骤

    2023-05-21 07:40:53
  • tensorflow 大于某个值为1,小于为0的实例

    2023-06-12 03:00:43
  • Sql Server datetime问题

    2024-01-27 03:06:25
  • 浅谈订单重构之 MySQL 分库分表实战篇

    2024-01-13 00:53:36
  • jQuery性能优化指南[译]

    2009-05-12 11:54:00
  • Python中实现变量赋值传递时的引用和拷贝方法

    2021-12-26 04:05:54
  • pymssql数据库操作MSSQL2005实例分析

    2024-01-15 02:23:42
  • asp之家 网络编程 m.aspxhome.com