nodemailer邮箱发送验证码的实现

 更新时间:2023年10月15日 11:10:48   作者:qq_45438471  
邮箱注册是常见的功能,通常需要发送邮箱验证码验证,本文就来介绍一下nodemailer邮箱发送验证码的实现,具有一定的参考价值,感兴趣的可以了解一下

前言:

想要实现向邮箱发送验证码功能,先来简单地梳理一下思路:

前端用正则表达式简单验证下邮箱格式的正确性

向后端发送请求,后端随机生成验证码,并根据前端传递的邮箱发送验证码

当然实际开发中当然没有那么简单,根据实际状况书写。
本文主要讲述后端实现步骤,前端挺容易的,自己研究一下吧。

后端实现

1、前期准备

以163邮箱为例(若没有邮箱,先注册一个新邮箱),先登录,然后点击设置,选择POP3/SMTP/IMAP

再开启服务

2、安装nodemailer

npm i nodemailer

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

3、代码实现

新建 utils 文件夹,该文件夹下新建mailer.js

const express = require('express');
//创建路由对象
const router = express.Router();

// 导入邮件路由处理函数对应的模块
const mail_handler = require("./mailHandler.js");

//挂载具体的路由
router.get('/mailer/sendmail', mail_handler)

同级目录下新建mailHandler.js,该文件用于存放实现发送验证码的函数

// 引入数据库
const db = require("../db/index");
// 引入bryptjs对验证码进行加密
const bcrypt = require("bcryptjs");

// 邮件发送插件
let nodemailer = require("nodemailer");

// 发送验证码函数
export.sendEmail = (req, res) => {
  // 创建一个SMTP客户端对象
  let transporter = nodemailer.createTransport({
    host: 'smtp.163.com',
    service: "163", //邮箱类型
    secure: true, //是否使用安全连接,对https协议的
    port: 465, //默认端口
    auth: {
      user: "xxx@163.com", //开启SMTP的邮箱,发件人
      pass: "授权码在163邮箱中可以生成", // 163授权码
    },
  });
  //产生随机6位验证码
  let verify = Math.random().toFixed(6).slice(-6)
  
  // 邮件内容
  let options = {
    from: "xxx@qq.com", //发送方
    to: req.body.user_email, //接收方
    subject: "激活验证码", //邮件主题
    // 还可以是html格式,需要text改成html
    text: "你的验证码为" + code, //邮件正文
  }
  // 发送邮件
  transporter.sendMail(options, (err, info) => {
    if (err) {
      res.send(err);
    } else {
      // 加密验证码
      code = bcrypt.hashSync(code, 10);
      // 将验证码存放到数据库中
      // 有技术的话存放到Redis缓存中去,经常查阅数据库可能会导致服务器超负荷
      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 },
        });
      });
    }
  });
}

为什么要切割成那么多文件呢?随着技术的不断提升,我们要逐渐形成模块化的思想。

在app.js导入并注册路由模块

const express = require('express');
const app = express();
 
//导入路由模块
const router = require('./route.js')
//注册路由模块
app.use(router);
 
app.listen(8080, () => {
    console.log('hello server');
}

4、效果图

 到此这篇关于nodemailer邮箱发送验证码的实现的文章就介绍到这了,更多相关node 邮箱发送验证码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • node.js express和koa中间件机制和错误处理机制

    node.js express和koa中间件机制和错误处理机制

    这篇文章主要介绍了node.js express和koa中间件机制和错误处理机制,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 用Node写一条配置环境的指令

    用Node写一条配置环境的指令

    这篇文章主要介绍了用Node写一条配置环境的指令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • node里的filesystem模块文件读写操作详解

    node里的filesystem模块文件读写操作详解

    这篇文章主要为大家介绍了node里的filesystem模块文件读写操作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Node.js使用JSONP接口的具体用法

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

    JSONP是一个跨域解决方案,本文主要介绍了Node.js使用JSONP接口的具体用法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 使用NestJS开发Node.js应用的方法

    使用NestJS开发Node.js应用的方法

    这篇文章主要介绍了使用NestJS开发Node.js应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • nodejs 实现简单的文件上传功能(示例详解)

    nodejs 实现简单的文件上传功能(示例详解)

    这篇文章主要介绍了nodejs 实现简单的文件上传功能,文件上传方式分为三种,本文通过实例代码给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 深入解析Node.js dns 模块

    深入解析Node.js dns 模块

    Node.js DNS模块实现域名解析与IP反查,支持A、MX、TXT等记录查询,提供lookup(系统级)和resolve(网络级)方法,兼容Promise API,可处理解析错误,适用于邮件路由、服务发现等场景,本文给大家介绍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搭建测试注册接口的实现

    node.js+postman+mongodb搭建测试注册接口的实现

    本文主要介绍了node.js+postman+mongodb搭建测试注册接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论