欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodemailer郵箱發(fā)送驗證碼的實現(xiàn)

 更新時間:2023年10月15日 11:10:48   作者:qq_45438471  
郵箱注冊是常見的功能,通常需要發(fā)送郵箱驗證碼驗證,本文就來介紹一下nodemailer郵箱發(fā)送驗證碼的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

前言:

想要實現(xiàn)向郵箱發(fā)送驗證碼功能,先來簡單地梳理一下思路:

前端用正則表達(dá)式簡單驗證下郵箱格式的正確性

向后端發(fā)送請求,后端隨機生成驗證碼,并根據(jù)前端傳遞的郵箱發(fā)送驗證碼

當(dāng)然實際開發(fā)中當(dāng)然沒有那么簡單,根據(jù)實際狀況書寫。
本文主要講述后端實現(xiàn)步驟,前端挺容易的,自己研究一下吧。

后端實現(xiàn)

1、前期準(zhǔn)備

以163郵箱為例(若沒有郵箱,先注冊一個新郵箱),先登錄,然后點擊設(shè)置,選擇POP3/SMTP/IMAP

再開啟服務(wù)

2、安裝nodemailer

npm i nodemailer

官方地址:https://nodemailer.com

3、代碼實現(xiàn)

新建 utils 文件夾,該文件夾下新建mailer.js

const express = require('express');
//創(chuàng)建路由對象
const router = express.Router();

// 導(dǎo)入郵件路由處理函數(shù)對應(yīng)的模塊
const mail_handler = require("./mailHandler.js");

//掛載具體的路由
router.get('/mailer/sendmail', mail_handler)

同級目錄下新建mailHandler.js,該文件用于存放實現(xiàn)發(fā)送驗證碼的函數(shù)

// 引入數(shù)據(jù)庫
const db = require("../db/index");
// 引入bryptjs對驗證碼進(jìn)行加密
const bcrypt = require("bcryptjs");

// 郵件發(fā)送插件
let nodemailer = require("nodemailer");

// 發(fā)送驗證碼函數(shù)
export.sendEmail = (req, res) => {
  // 創(chuàng)建一個SMTP客戶端對象
  let transporter = nodemailer.createTransport({
    host: 'smtp.163.com',
    service: "163", //郵箱類型
    secure: true, //是否使用安全連接,對https協(xié)議的
    port: 465, //默認(rèn)端口
    auth: {
      user: "xxx@163.com", //開啟SMTP的郵箱,發(fā)件人
      pass: "授權(quán)碼在163郵箱中可以生成", // 163授權(quán)碼
    },
  });
  //產(chǎn)生隨機6位驗證碼
  let verify = Math.random().toFixed(6).slice(-6)
  
  // 郵件內(nèi)容
  let options = {
    from: "xxx@qq.com", //發(fā)送方
    to: req.body.user_email, //接收方
    subject: "激活驗證碼", //郵件主題
    // 還可以是html格式,需要text改成html
    text: "你的驗證碼為" + code, //郵件正文
  }
  // 發(fā)送郵件
  transporter.sendMail(options, (err, info) => {
    if (err) {
      res.send(err);
    } else {
      // 加密驗證碼
      code = bcrypt.hashSync(code, 10);
      // 將驗證碼存放到數(shù)據(jù)庫中
      // 有技術(shù)的話存放到Redis緩存中去,經(jīng)常查閱數(shù)據(jù)庫可能會導(dǎo)致服務(wù)器超負(fù)荷
      const sendCodeSql = "update users set user_code=? where user_email=?";
      db.query(sendCodeSql, [code, req.body.user_email], (err, results) => {
        console.log('-----------------------------------',results)
        if (err) return res.cc(err);
        if (results.affectedRows !== 1) return res.cc("添置驗證碼失??!");
        res.send({
          status: 200,
          message: "添置驗證碼成功!",
          data: { info, code },
        });
      });
    }
  });
}

為什么要切割成那么多文件呢?隨著技術(shù)的不斷提升,我們要逐漸形成模塊化的思想。

在app.js導(dǎo)入并注冊路由模塊

const express = require('express');
const app = express();
 
//導(dǎo)入路由模塊
const router = require('./route.js')
//注冊路由模塊
app.use(router);
 
app.listen(8080, () => {
    console.log('hello server');
}

4、效果圖

 到此這篇關(guān)于nodemailer郵箱發(fā)送驗證碼的實現(xiàn)的文章就介紹到這了,更多相關(guān)node 郵箱發(fā)送驗證碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入解析koa之中間件流程控制

    深入解析koa之中間件流程控制

    這篇文章主要介紹了深入解析koa之中間件流程控制,koa被認(rèn)為是第二代web后端開發(fā)框架,相比于前代express而言,其最大的特色無疑就是解決了回調(diào)金字塔的問題,讓異步的寫法更加的簡潔。,需要的朋友可以參考下
    2019-06-06
  • koa-passport實現(xiàn)本地驗證的方法示例

    koa-passport實現(xiàn)本地驗證的方法示例

    這篇文章主要介紹了koa-passport實現(xiàn)本地驗證的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • node.js中的buffer.Buffer.byteLength方法使用說明

    node.js中的buffer.Buffer.byteLength方法使用說明

    這篇文章主要介紹了node.js中的buffer.Buffer.byteLength方法使用說明,本文介紹了buffer.Buffer.byteLength的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node.js中的fs.readSync方法使用說明

    node.js中的fs.readSync方法使用說明

    這篇文章主要介紹了node.js中的fs.readSync方法使用說明,本文介紹了fs.readSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • nodejs redis 發(fā)布訂閱機制封裝實現(xiàn)方法及實例代碼

    nodejs redis 發(fā)布訂閱機制封裝實現(xiàn)方法及實例代碼

    這篇文章主要介紹了nodejs redis 發(fā)布訂閱機制封裝的相關(guān)資料,這里提供了實現(xiàn)方法,及實例代碼,具有參考價值,需要的朋友可以參考下
    2016-12-12
  • module.exports和exports使用誤區(qū)案例分析

    module.exports和exports使用誤區(qū)案例分析

    module.exports和exports使用誤區(qū),使用require()模塊時,得到的永遠(yuǎn)都是module.exports指向的對象
    2023-04-04
  • nodejs教程之制作一個簡單的文章發(fā)布系統(tǒng)

    nodejs教程之制作一個簡單的文章發(fā)布系統(tǒng)

    本文主要講述了使用nodejs制作一個簡單的文章發(fā)布系統(tǒng),使用mongodb數(shù)據(jù)庫,時間比較緊,功能做的也比較簡單,僅僅是增刪改查,外加附近上傳,有相同需求的小伙伴可以參考下
    2014-11-11
  • node.js文件的壓縮解壓問題

    node.js文件的壓縮解壓問題

    這篇文章主要介紹了node.js文件的壓縮解壓問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對比

    關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對比

    這篇文章主要給大家介紹了關(guān)于Error:EPERM:operation?not?permitted,mkdir...的幾種解決辦法對比,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-01-01
  • nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法

    nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法

    今天小編就為大家分享一篇nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論