邮箱发送验证码(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

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取