node.js模擬實現(xiàn)自動發(fā)送郵件驗證碼
作者:「零一」
這篇文章主要為大家介紹了node.js模擬實現(xiàn)自動發(fā)送郵件驗證碼的實例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
引言
我們在開發(fā)網站時,發(fā)送驗證碼的功能是必定會遇到的,但發(fā)送短信驗證碼是需要付費的,那么郵箱驗證碼就是一個白嫖的好辦法,今天就來教大家用node如何自動發(fā)送郵箱驗證碼。
接下來跟著我的步驟走,就能輕松完成郵箱的自動發(fā)送
1. QQ郵箱設置




2. 安裝nodemailer
npm i -S nodemailer
3.配置信息
//1. 導入nodemailer
const nodemailer = require('nodemailer')
//2. 創(chuàng)建運輸對象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
secure: true,
auth: {
user: '5641132547@qq.com',//輸入你開啟SMTP服務的QQ郵箱
pass: 'oxpbfzjtnurbjhei' //輸入我們剛才獲得的那串字符
}
})
//3.配置發(fā)送郵件的信息
let mailOptions = {
from: '5641132547@qq.com', // 發(fā)送者,也就是你的QQ郵箱
to: '12938203121@qq.com', // 接受者郵箱,可以同時發(fā)送多個,以逗號隔開
subject: '測試發(fā)送郵件', // 郵件標題
html: `
<p>這是我的測試郵件</p>
<p>哈哈哈,收到請回復</p>
` //郵件內容,以html的形式輸入,在郵件中會自動解析顯示
};
//4.發(fā)送郵件
transporter.sendMail(mailOptions, function(err, data){
//回調函數(shù),用于判斷郵件是否發(fā)送成功
...
})
4.綜合
但我們會發(fā)現(xiàn),通常發(fā)送郵件是作為一個工具,目標郵箱,也就是我們要發(fā)送過去的郵箱,通常是會變化的,那我們就需要把代碼封裝一下,接下來放一個完整的代碼。
/* 文件名: sendEmail.js */
const nodemailer = require('nodemailer')
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
secure: true,
auth: {
user: '5641132547@qq.com',
pass: 'asdasfsfwqqw'
}
});
module.exports = async function fn(email, code){
let status = null
await new Promise((resolve, reject) => {
transporter.sendMail({
from: '5641132547@qq.com',
to: email,
subject: '網站賬戶注冊驗證碼',
html: `
<p>網站賬戶注冊驗證碼:</p>
<span style="font-size: 18px; color: red">` + code + `</span>`
}, function (err, info) {
if (err) {
status = 0
reject()
} else {
status = 1
resolve()
}
});
})
return status
}
/* 文件名 main.js */
//導入我們sendEmail.js文件中導出的東西
const sendEmail = require('./sendEmail.js')
//此時sendEmail是一個函數(shù),可傳參數(shù)有 email, code , 執(zhí)行完會返回一個status, 用于判斷是否發(fā)送成功
const result = sendEmail('190380192@qq.com', 568712)
if(result === 0) {
console.log('郵件發(fā)送失敗')
}
else if(result === 1) {
console.log('郵件發(fā)送成功')
}
最后我們就會收到這樣一封郵件啦

5.講解
對于上一部分對整個代碼的封裝當中, 可能大家對 async 和 await 這兩個關鍵詞有點陌生,這里我就給大家簡單講解一下吧,如果想深入了解的,可以去查閱ES7的資料進行了解。
首先, 我們的發(fā)送郵箱是屬于異步操作的。 async 是 用于表示函數(shù)中存在異步操作, 而 await 后面必須給嗯一個Promise , 則在這個函數(shù)內,必須要等到 await 后面的 Promise 內的函數(shù)執(zhí)行完畢以后,才會繼續(xù)往下執(zhí)行。
結束語
好啦,node.js模擬發(fā)送驗證碼的教程就講解到這啦,更多關于node.js自動發(fā)送郵件驗證碼的資料請關注腳本之家其它相關文章!