nodeJs 实现邮箱验证码注册

功能设计

参考内容
  • nodemailer官网
  • QQ开启POP3/SMTP参考

1. 逻辑

用户输入邮箱,获取验证码

  • 验证该邮件是否已经注册过
  • 验证该邮件是否已经发送验证码,验证码是否过期。过期则重新生成验证码数据库更新验证码。否则生成验证码存入数据库
  • 基于nodemailer发送验证码
  • 注册成功,新用户信息插入用户表,删除emal表该用户验证码信息

2.数据表

User表

用户表

id email password
1 1@qq.com 密码
Email

生成验证码后,需要将验证码和邮箱存在email表,用户在注册提交时用来验证验证码是否正确是否过期。

用户注册成功后,删除该条记录。

id email email_code
1 1@qq.com 验证码

3. 邮箱开启SMTP服务(QQ邮箱)

4.代码参考


const NodeEmail = require('nodemailer');
const { emailConfig } = require('../../config/base');
const EmailModel = require('../model/Email');
const UserModel = require('../model/User');
const { EmailExistHttpException } = require('../lib/HttpException')
const transporter = NodeEmail.createTransport({service: 'qq',port: 465,secureConnection: true, auth: emailConfig.auth // => { user: 你的邮箱, pass: 你的邮箱密码,开启POP3/SMTP的密码,如上图 }
});class Email {static async getEmailCode(email) {const user = await UserModel.findUser(email);if (user) throw new EmailExistHttpException();const db = await EmailModel.findEmail(email);// 生成验证码let code = Math.random().toString().slice(-6);if (!db) { // 当前email不存在,既没有给该email发送过验证码await EmailModel.inster(email, code);} else { // 当前email,已经发送了验证码const startTime = new Date(db.createdAt).getTime();const intervalTime = 1000 * 60 * 60; // 过期时间if (new Date().getTime() - startTime > intervalTime ){await EmailModel.updateCode(email, code);}else{code = db.email_code;}}const subject = "账号注册";const text = "text";const html = `<div><span>验证码:</span><b>${code}</b></div>`;await Email.SendEmail(email, subject, text, html);return { message: '邮件已发送' };}static async SendEmail(email, subject, text, html) {return await transporter.sendMail({from: emailConfig.auth.user, // 发送者邮箱地址to: email,                   // 接收这邮箱地址subject,                     // 邮件主题html,                        // html模板text                         // 文本内容})}
}module.exports = Email;

nodeJs 实现邮箱验证码注册相关推荐

  1. mysql查询使用qq邮箱注册_Spring Boot实现qq邮箱验证码注册和登录验证功能

    1.登录注册思路 这是一个使用spring boot做的一个qq邮箱注册和登录的项目. 没写前端页面,使用postman测试.有截图详细. 1.1.思路 注册:通过输入的邮箱发送验证码,检验前端传来的 ...

  2. PHPMailer实现简单邮箱验证码

    00PHPMailer PHPMailer是一个非常强大的 php发送邮件类,可以设定发送邮件地址.回复地址.邮件主题.html网页,上传附件,并且使用起来非常方便. phpMailer 的特点: 1 ...

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

    今天做了个小demo,是用nodejs实现注册时(当然在别的地方也是可以用的)的邮箱验证功能,大体就是往指定的邮箱发送六位验证码.以下是详细步骤. 1.使用模块:nodemailer 安装:npm i ...

  4. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片...

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  5. 发送邮箱验证码进行注册验证

    一.流程图 操作思路 进行邮箱验证码验证 比较与输入的验证码 是否一致 一致的话则可以注册 ** 打开邮箱IMAP/SMTP服务 ** 二.代码示例 (1)生成随机验证码 def get_random ...

  6. gin学习——邮箱发送验证码注册用户

    qq邮箱-设置-账户 安装 go get -u github.com/jordan-wright/email go get -u github.com/garyburd/redigo/redis da ...

  7. java注册界面发送邮箱验证码(无线程版)

    ​ 邮箱验证注册 本篇文章使用第三方jar包实现邮箱发送验证码来注册用户,该文章未采用线程如果多人访问注册注册页面发送邮件可能会导致服务器崩溃,建议采用线程发送邮件!!! 一.前期准备工作 1.发送验 ...

  8. java发送QQ邮箱验证码实现登录注册、邮箱验证码防刷校验

    文章目录 一:前台功能实现 1.1 页面编写 1.2 发送验证码--sendEmailCode 1.2.1 远程调用发送接口 1.2.1 接口防刷校验--60s内只能发送一次 二:获取QQ邮箱授权码 ...

  9. 自动化测试注册接口,如何生成大量临时邮箱和获取邮箱验证码

    背景 编写自动化测试脚本验证服务接口和业务流程是否正常是必不可少的监控步骤, 但是现在很多注册接口需要使用邮箱来注册,并校验邮箱验证码,这应该如何实现自动测试? 主要难点在于如何生成大量临时邮箱(因为 ...

  10. JavaWeb登录注册系统/界面(邮箱验证码,数据库连接,详细注释,可作结课作业,可用于学习,可接入其他主系统)

    目录 1.前言 2.系统实机演示 3.系统分析与设计 (1)主要软件与工具 (2)系统分析 (3)系统规划 4.系统设计与构建 (1)JavaWeb创建 (2)JavaWeb运行 (3)先期依赖准备: ...

最新文章

  1. 最新!中国内地大学ESI排名出炉:313所高校上榜!
  2. 分享30个激励的非营利网站设计精美案例
  3. 执行完execute和update后存储过程变成invalid_学会反射后,我被面试官录取了(干货)
  4. java爬去赶集,爬取赶集网二手物品下所有物品的信息
  5. 齐博cms任意登陆漏洞
  6. 《Reids 设计与实现》第三章 跳跃表
  7. E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
  8. 电脑强制打开手机usb调试_手机、电脑录屏的5种正确打开方式,简直太快了!网友:实用...
  9. android studio for android learning (二十七) UI控件动态加载机制浅析
  10. gcc下载及安装教程
  11. C# doevents
  12. “钱三篇”后续之物价为什么上涨?
  13. 66ccff.xyz
  14. tf.flags用法
  15. VUCA时代下,创业团队如何提升整体效率?
  16. ps抠图都有哪些方面,有哪些相关教程呢
  17. 微机原理与接口技术实验:子程序设计实验
  18. ST-LINK 连接图
  19. 光绘文件 c语言 解析,基于NXP TEA19051的Type-C 60W多协议快充方案设计(含gerber+方案阐述 )...
  20. 论文分为哪几个级别(一)

热门文章

  1. 东芝Toshiba e-STUDIO245 一体机驱动
  2. 网络工程师中级--上午科目
  3. plm系统服务器,SIPM/PLM
  4. python-opencv视频转图片+图片转视频(步骤详解)(亲测有效)
  5. Android实现连点按钮三下退出程序
  6. Qt截取长图(带滚动条被遮挡部分需要展开截取全图)QScrollArea、QPixmap
  7. 立春----直流电压电流检测模块
  8. VSCode如何返回上一步
  9. 开启win10电池方案卓越性能
  10. 跟着实例学eclipse插件开发--第一篇:翻译插件