nodejs实现邮箱发送验证码功能

 更新时间:2024年07月17日 08:29:19   作者:前端梭哈攻城狮  
开发个人网站时,注册页面可以使用邮箱验证,于是记录一下如何用nodejs/express服务器实现邮箱发送验证码,不仅可以在邮箱注册时使用,还可以拓展用于各种安全验证,本文给大家介绍了使用nodejs实现邮箱发送验证码功能,需要的朋友可以参考下

1、前言

开发个人网站时,注册页面可以使用邮箱验证,于是记录一下如何用nodejs/express服务器实现邮箱发送验证码,不仅可以在邮箱注册时使用,还可以拓展用于各种安全验证。

2、依赖包

nodejs服务器需要 express,另外就是我们发送邮箱的包 nodemailer  , cors解决跨域用于测试

npm i express nodemailer cors

3、使用qq邮箱获取授权码

1)首先封装 nodemailer.js 文件,添加基本配置,配置前需要得到邮箱类型的 port 和  secure  还有 邮箱stmp授权码。

2)//node_modules/nodemailer/lib/well-known/services.json  可以查看相关的配置,比如这里是qq邮箱,port为465,secure为true。

3)邮箱---设置--账户--POP3/SMTP服务---开启---获取stmp授权码

最终获取到授权码

4、代码实现

1)创建nodemailer.js文件

const nodemailer = require('nodemailer')

let nodeMail = nodemailer.createTransport({
  service: "qq", //类型qq邮箱
  port: 465, //上文获取的port
  secure: true, //上文获取的secure
  auth: {
    user: "779217162@qq.com", // 发送方的邮箱,可以选择你自己的qq邮箱
    pass: "上文获取的stmp授权码", // 上文获取的stmp授权码
  },
});

module.exports = nodeMail

2)创建app.js

//app.js
const express = require("express");
const cors = require("cors");
const nodeMail = require("./nodemailer.js");

const app = express();
app.use(express.static("public"));

app.use(express.json());
app.use(cors());

app.post("/api/email", async (req, res) => {
  const email = req.body.email;
  const code = String(Math.floor(Math.random() * 1000000)).padEnd(6, "0"); //生成6位随机验证码
  //发送邮件
  const mail = {
    from: `"faker前端开发"<779217162@qq.com>`, // 发件人
    subject: "验证码", //邮箱主题
    to: email, //收件人,这里由post请求传递过来
    // 邮件内容,用html格式编写
    html: `
             <p>您好!</p>
             <p>您的验证码是:<strong style="color:orangered;">$[code]</strong></p>
             <p>如果不是您本人操作,请无视此邮件</p>
         `,
  };
  await nodeMail.sendMail(mail, (err, info) => {
    if (!err) {
      res.json({ msg: "验证码发送成功" });
    } else {
      res.json({ msg: "验证码发送失败,请稍后重试" });
    }
  });
});

app.listen(3123, () => {
  console.log("服务开启成功 , http:www.localhost:3123");
});

3)创建/public/index.html文件

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>发送邮件</title>
  </head>
  <body>
    <button onclick="sendMail()">发送邮件</button>
    <script>
      async function sendMail() {
        console.log("发送邮件");
        const res = await fetch("/api/email", {
          method: "POST",
          headers: {
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            email: "991584844@qq.com",
          }),
        });
        const data = await res.json();
        console.log(data);
      }
    </script>
  </body>
</html>

目录结构为:

5、发送效果

发送邮件: 779217162@qq.com ===>  991584844@qq.com

6、源码地址

github: https://github.com/ArcherNull/Archer/tree/main/nodejs-mailer

以上就是nodejs实现邮箱发送验证码功能的详细内容,更多关于nodejs邮箱发送验证码的资料请关注脚本之家其它相关文章!

相关文章

  • node.js之基础加密算法模块crypto详解

    node.js之基础加密算法模块crypto详解

    这篇文章主要介绍了node.js之基础加密算法模块crypto详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解

    Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解

    这篇文章主要介绍了Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Nodejs全栈框架StrongLoop推荐

    Nodejs全栈框架StrongLoop推荐

    StrongLoop基本提供了制作一个移动产品所有的框架和工具,从标准的Backend server,Devops,应用监控,。要想介绍完全StrongLoop的所有产品得写一个长篇连载了,这里只简单的浏览一遍。
    2014-11-11
  • nodejs中使用HTTP分块响应和定时器示例代码

    nodejs中使用HTTP分块响应和定时器示例代码

    本文通过示例将要创建一个输出纯文本的HTTP服务器,输出的纯文本每隔一秒会新增100个用换行符分隔的时间戳。实例代码非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • 基于Express实现递归遍历文件和CRUD操作

    基于Express实现递归遍历文件和CRUD操作

    在现代的 Web 应用开发中,文件管理是一个常见而重要的需求,所以本文就来讲讲如何利用 Express 框架,在递归遍历文件之后实现强大的 CRUD 操作,构建一个功能完善的文件管理系统,感兴趣的可以了解一下
    2023-06-06
  • node.js中的buffer.toString方法使用说明

    node.js中的buffer.toString方法使用说明

    这篇文章主要介绍了node.js中的buffer.toString方法使用说明,本文介绍了buffer.toString的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • nodejs编写bash脚本的终极方案分享

    nodejs编写bash脚本的终极方案分享

    你懂JavaScript吗?你需要写一个Shell脚本吗?那么你应该试一下Node.js,它很容易安装,而且很适合通过写Shell脚本来学习它,下面这篇文章主要给大家介绍了关于nodejs编写bash脚本的终极方案,需要的朋友可以参考下
    2021-08-08
  • 使用koa-log4管理nodeJs日志笔记的使用方法

    使用koa-log4管理nodeJs日志笔记的使用方法

    这篇文章主要介绍了使用koa-log4管理nodeJs日志笔记的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 基于Express和Multer实现文件本地服务器文件上传功能

    基于Express和Multer实现文件本地服务器文件上传功能

    在现代应用程序中,文件上传功能成为了用户共享和存储数据的重要途径,所以本文我们一起来探讨文件上传中间件的重要性,并提供常见的实现方法和相应的代码吧
    2023-06-06
  • NodeJS模块Buffer原理及使用方法解析

    NodeJS模块Buffer原理及使用方法解析

    这篇文章主要介绍了NodeJS模块Buffer原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论