如何利用node實現(xiàn)發(fā)送QQ郵箱驗證碼
開通QQ郵箱POP3/SMTP服務
登錄QQ郵箱網(wǎng)址,進入設(shè)置選擇賬戶tab頁翻到最低下開啟此服務

獲取qq郵箱授權(quán)碼

搭建node接口服務
思路
- 創(chuàng)建index.js文件
- 安裝connect、body-parser、nodemailer模塊
- 編寫引入connect框架
- 編寫引入bodyParser模塊
- 引入nodemailer模塊
開始安裝插件
使用cmd命令提示或者Git一次執(zhí)行以下安裝命令

開始編寫index.js文件程序
引入各個模塊
let connect = require('connect'), // 引入connect模塊
bodyParser = require('body-parser'), // 引入body-parser解析模塊
nodemailer = require('nodemailer'); // 引入nodemailer模塊聲明并定于發(fā)送郵件函數(shù)
async function sendMail(text,receive) {
let user = "703669046@qq.com";//自己的郵箱
let pass = "sfsdfsdfsggxcew"; //qq郵箱授權(quán)碼
let to = `${receive}@qq.com`; //對方的郵箱
let transporter = nodemailer.createTransport({
host: "smtp.qq.com",
port: 587,
secure: false,
auth: {
user: user, // 用戶賬號
pass: pass, //授權(quán)碼,通過QQ獲取
},
});
let info = await transporter.sendMail({
from: `測試node發(fā)送郵箱<${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方法來維護一個中間件隊列跨域請求設(shè)置
.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轉(zhuǎn)碼
next(); //next 方法就是一個遞歸調(diào)用
})編寫發(fā)送qq郵箱驗證碼接口
.use('/emails', function (req, res, next) {
let qqEmail= req.body.email;
var obj = {
code:Math.ceil(Math.random()*1000)
};
let text=`驗證碼:${obj.code}.您正在使用登錄功能,驗證碼提供他人可能導致賬號被盜,請勿轉(zhuǎn)發(fā)或泄漏`
sendMail(text,qqEmail)
res.end(JSON.stringify(obj))
next();
})設(shè)置端口
在var app = connect()后面接上
.listen(3331);
啟動node服務
在index.js當前文件下開啟cmd命令提示符或者Git命令框執(zhí)行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>發(fā)送qq驗證給用戶

成功收到郵箱驗證碼

總結(jié)
到此這篇關(guān)于如何利用node實現(xiàn)發(fā)送QQ郵箱驗證碼的文章就介紹到這了,更多相關(guān)node發(fā)送QQ郵箱驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js+Ajax實現(xiàn)獲取HTTP服務器返回數(shù)據(jù)
這篇文章主要介紹了node.js+Ajax實現(xiàn)獲取HTTP服務器返回數(shù)據(jù),講解的十分詳細,也給出了很多的實例,是篇非常不錯的文章,這里推薦給大家。2014-11-11
利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式
這篇文章主要介紹了利用nodejs讀取圖片并將二進制數(shù)據(jù)轉(zhuǎn)換成base64格式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08
Node.js 服務器端應用開發(fā)框架 -- Hapi.js
Hapi.js 是一個用來構(gòu)建基于 Node.js 的應用和服務的富框架,使得開發(fā)者把重點放在便攜可重用的應用邏輯而不是構(gòu)建架構(gòu)。內(nèi)建輸入驗證、緩存、認證和其他 Web 應用開發(fā)常用的功能。2014-07-07
淺談Node.js ORM框架Sequlize之表間關(guān)系
下面小編就為大家?guī)硪黄獪\談Node.js ORM框架Sequlize之表間關(guān)系。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
vscode調(diào)試node.js的實現(xiàn)方法
這篇文章主要介紹了vscode調(diào)試node.js的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03
NPM命令運行報錯:npm?v10.2.4?is?known?not?to?run?on?Node.js
這篇文章主要給大家介紹了關(guān)于NPM命令運行報錯:npm?v10.2.4?is?known?not?to?run?on?Node.js?v14.21.1的解決辦法,文中將解決辦法介紹的非常詳細,需要的朋友可以參考下2024-01-01

