邮箱发送验证码(nodemailer)

2023-10-15 10:36

本文主要是介绍邮箱发送验证码(nodemailer),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

邮箱发送验证码(nodemailer)

  • 前言:
  • 后端实现
    • 1、前期准备
    • 2、安装nodemailer
    • 3、代码实现
    • 4、效果图

前言:

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

  • 前端用正则表达式简单验证下邮箱格式的正确性
  • 向后端发送请求,后端随机生成验证码,并根据前端传递的邮箱发送验证码

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

后端实现

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改成htmltext: "你的验证码为" + 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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/217110

相关文章

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Spring 验证码(kaptcha)

首先引入需要的jar包: <dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9</version></dependency> 配置验证码相关设置: <bean id="captchaProducer" class="com.

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信