nodejs怎么实现发送邮箱验证码功能
发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,这篇文章主要讲解了"nodejs怎么实现发送邮箱验证码功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"nodejs怎么实现发送邮箱验证码功能"吧!1
千家信息网最后更新 2024年10月22日nodejs怎么实现发送邮箱验证码功能
这篇文章主要讲解了"nodejs怎么实现发送邮箱验证码功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"nodejs怎么实现发送邮箱验证码功能"吧!
1、使用模块:nodemailer
安装:npm install nodemailer --save
2、首先是来写一下前台注册界面,不说了,先上图。(不想看这一段的话直接跳到最后看邮箱验证码的实现)
然后实现以下以下效果(看图先),就是点击发送验证码时出现一分钟后再试的倒计时。
那现在先上代码先
(1)form表单
(2)倒计时函数
现在前台的注册页面就可以用了。
(2)发送邮箱
第一步:前往邮箱设置,以163邮箱为例,开启POP3/SMTP/IMAP,若不会,自行百度
第二步:新建一个nodemailer.js文件写发送邮件的配置信息,上代码
//nodemailer.jsconst nodemailer = require('nodemailer'); //创建一个smtp服务器const config = { host: 'smtp.163.com', port: 465, auth: { user: '这里写你自己的163邮箱@163.com', //注册的163邮箱账号 pass: 'xxxxxxx' //邮箱的授权码,不是注册时的密码,等你开启的stmp服务自然就会知道了 }};// 创建一个SMTP客户端对象const transporter = nodemailer.createTransport(config); //发送邮件module.exports = function (mail){ transporter.sendMail(mail, function(error, info){ if(error) { return console.log(error); } console.log('mail sent:', info.response); });};
第三步:发送验证码
router.get('/email',async (ctx)=>{ var email = ctx.query.email;//刚刚从前台传过来的邮箱 var user_name = ctx.query.user_name;//刚刚从前台传过来用户名 var code = await tools.createSixNum();//这里是我写的生成的随机六位数,等等下面给代码 var date = new Date();//获取当前时间 var isLive = "no"; //去数据库中找有没有同名的用户名,这里就要自己写了,不同的数据库查询方法不同 var result =await DB.find('user',{user_name:user_name}); //console.log(result); if(result.length>0){ ctx.body ={success:false,message:"账号已经存在"} }else{ ctx.body ={success:true,message:"账号可行"};//数据传回前台 var mail = { // 发件人 from: '<你自己的163邮箱@163.com>', // 主题 subject: '接受凭证',//邮箱主题 // 收件人 to:email,//前台传过来的邮箱 // 邮件内容,HTML格式 text: '用'+code+'作为你的验证码'//发送验证码 }; var json = {user_name,email,code,date,isLive}; await DB.insert('user',json);//将获取到的验证码存进数据库,待会提交时要检查是不是一致 await nodemail(mail);//发送邮件 }})
因为发的是六位数字的验证码,这里我写了一个随机生成六位随机数的函数:
createSixNum(){ var Num=""; for(var i=0;i<6;i++) { Num+=Math.floor(Math.random()*10); } return Num; }
接下来就可以正常发送了,见下图
发送完了验证码,输入完验证码还要验证一下是否真确
router.post('/doRegister',async (ctx)=>{ //console.log(ctx.request.body); var username = ctx.request.body.username;//获取用户名 var password = ctx.request.body.password;//获取密码 var code = ctx.request.body.code;//获取你输入的验证码 //去数据库把刚刚在存验证码的时候一起存的那条记录找出来 var result =await DB.find('user',{"user_name":username}); var nowDate = (new Date()).getTime();//获取当前时间 判断验证码是否正确,时间是否超过10分钟 if(result[0].code===code && (result[0].date.getTime()) - nowDate <600000){ //更新数据库的用户信息,把用户密码深的也存进去 await DB.update('user',{user_name:username},{ "password":password, "status":1, "isLive":"yes",//注册成功啦 "add_time":tools.getTime() }); }else{ ctx.render('admin/error',{ //验证码过期或者是验证码错误,要写点什么的话自己再去写写吧。 }) } });
感谢各位的阅读,以上就是"nodejs怎么实现发送邮箱验证码功能"的内容了,经过本文的学习后,相信大家对nodejs怎么实现发送邮箱验证码功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
验证
邮箱
前台
数据
用户
数据库
功能
用户名
邮件
输入
倒计时
内容
密码
时间
账号
学习
不同
上代
主题
信息
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳安卓软件开发代码
ssd搭建nas服务器
计算机应用软件开发靠谱吗
绝地求生怎么看服务器图解
北京艺典淘网络技术
excel数据库未链接成功
国土空间数据库文本
微信数据库结构设计
亚马逊网络安全工程师
数据库kcb表是什么表
腾讯tdata数据库
中稷互联网科技有限公司
如何计算软件开发成本
从数据库提取试题
石化网络安全宣传周
scum怎么取消服务器最爱
插入数据库的sql
服务器资源管理连接数据库
dell服务器常用系列
新装的系统无线显示无网络安全
神通数据库 公司
互联网公司属于高科技吗
奇迹服务器商店文件
西城区综合网络技术服务哪家好
网络安全素质教育考试题型答案
文献数据库检索的过程和策略
ai语音读书 软件开发
公安积极开展网络安全宣传
云管理服务器软件哪个好
记算机网络技术就业方向