nodejs怎么实现发送邮箱验证码功能
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要讲解了"nodejs怎么实现发送邮箱验证码功能",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"nodejs怎么实现发送邮箱验证码功能"吧!1
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
为什么数据库要存在数据冗余
计算机网络技术大专都是学什么
网络安全班会结尾
金融网络安全管理条例
黄山斯矣网络技术有限公司
广东戴尔服务器高性价比选择
一个服务器可安装多个数据库吗
最新直销软件开发公司
中间件管理服务器
支招网络安全
学网络技术有哪些网站可以借鉴
即墨软件开发教程哪里好
表在数据库中是一个字段
济南华为互联网科技产业园
关于成立网络安全小组
服务器可以强制关机重启吗
数据库 搭建 方案
服务器告警什么意思
次新股里的网络安全上市公司
江西第一届网络安全大赛
世界服务器登录不了怎么办
濮阳医药软件开发商
数据库中间有三条线
有什么可以学的网络技术
长宁区一站式软件开发收费套餐
网络技术中表单的问题
网络安全社会协同治理
食药监官总局数据库
学习网络技术的院服是怎样的
电信网络技术工程师面试题