最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言:

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

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

向后端發(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對驗證碼進行加密
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, //默認端口
    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ù)器超負荷
      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)文章

  • node.js?express和koa中間件機制和錯誤處理機制

    node.js?express和koa中間件機制和錯誤處理機制

    這篇文章主要介紹了node.js?express和koa中間件機制和錯誤處理機制,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 用Node寫一條配置環(huán)境的指令

    用Node寫一條配置環(huán)境的指令

    這篇文章主要介紹了用Node寫一條配置環(huán)境的指令,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • node里的filesystem模塊文件讀寫操作詳解

    node里的filesystem模塊文件讀寫操作詳解

    這篇文章主要為大家介紹了node里的filesystem模塊文件讀寫操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Node.js使用JSONP接口的具體用法

    Node.js使用JSONP接口的具體用法

    JSONP是一個跨域解決方案,本文主要介紹了Node.js使用JSONP接口的具體用法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 使用NestJS開發(fā)Node.js應(yīng)用的方法

    使用NestJS開發(fā)Node.js應(yīng)用的方法

    這篇文章主要介紹了使用NestJS開發(fā)Node.js應(yīng)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • nodejs?實現(xiàn)簡單的文件上傳功能(示例詳解)

    nodejs?實現(xiàn)簡單的文件上傳功能(示例詳解)

    這篇文章主要介紹了nodejs?實現(xiàn)簡單的文件上傳功能,文件上傳方式分為三種,本文通過實例代碼給大家詳細介紹,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • 深入解析Node.js dns 模塊

    深入解析Node.js dns 模塊

    Node.js DNS模塊實現(xiàn)域名解析與IP反查,支持A、MX、TXT等記錄查詢,提供lookup(系統(tǒng)級)和resolve(網(wǎng)絡(luò)級)方法,兼容Promise API,可處理解析錯誤,適用于郵件路由、服務(wù)發(fā)現(xiàn)等場景,本文給大家介紹Node.js dns 模塊,感興趣的朋友一起看看吧
    2025-07-07
  • Nodejs下用submit提交表單提示cannot post錯誤的解決方法

    Nodejs下用submit提交表單提示cannot post錯誤的解決方法

    這篇文章主要介紹了Nodejs下用submit提交表單提示cannot post錯誤的解決方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-11-11
  • 解決Mac安裝thrift因bison報錯的問題

    解決Mac安裝thrift因bison報錯的問題

    今天小編就為大家分享一篇解決Mac安裝thrift因bison報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node.js+postman+mongodb搭建測試注冊接口的實現(xiàn)

    node.js+postman+mongodb搭建測試注冊接口的實現(xiàn)

    本文主要介紹了node.js+postman+mongodb搭建測試注冊接口的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06

最新評論

广南县| 宁安市| 旬邑县| 女性| 柳林县| 资源县| 元江| 吴旗县| 乌兰县| 玉溪市| 夹江县| 黎平县| 方城县| 西丰县| 勐海县| 江川县| 怀仁县| 醴陵市| 阿拉尔市| 得荣县| 吴江市| 蓬莱市| 丹棱县| 大埔区| 保山市| 临沧市| 棋牌| 哈巴河县| 平泉县| 云林县| 依兰县| 涪陵区| 隆子县| 泸州市| 合川市| 闽清县| 定边县| 寻乌县| 宝兴县| 彭泽县| 紫云|