Node.js如何实现注册邮箱激活功能 (常见)


Posted in Javascript onJuly 23, 2017

一. 先注册一个支持发送验证邮件的邮箱,网易的126邮箱就可以

注册成功后进行登录,然后点击导航栏的设置,选择POP3/SMTP/IMAP,开启POP3/SMTP/IMAP服务,设置授权码就可以了。

二. 下载nodemailer插件

在命令行输入:npm install --save nodemailer

三. 编写发送邮件代码:

1 . 对发送激活邮件代码进行封装,然后导出:

//email.js
// 引入 nodemailer
var nodemailer = require('nodemailer');
// 创建一个SMTP客户端配置
var config = {
    host: 'smtp.126.com', 
    port: 25,
    auth: {
      user: 'xxx@126.com', //刚才注册的邮箱账号
      pass: 'xxxxxx' //邮箱的授权码,不是注册时的密码
    }
  };
// 创建一个SMTP客户端对象
var 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);
  });
};

2 . 进行测试:

//sendtest.js
var send = require('./mail-test');
// 创建一个邮件对象
var mail = {
  // 发件人
  from: '流觞曲水 <xxx@126.com>',
  // 主题
  subject: '测试',
  // 收件人
  to: 'xxx@qq.com',
  // 邮件内容,HTML格式
  text: '点击激活:xxx' //接收激活请求的链接
};
send(mail);

成功就可以在测试的邮箱看到所发的信息。

四. 验证步骤

就我自己之前写的一个个人博客的项目而言,简单的讲一下如何实现邮箱验证。

1 . 在自己定义的数据库用户数据结构中一定要有激活码、过期时间、是否已经激活的字段,用于在激活时进行判断;

{
  code: String, //激活码,格式自己定义
  date: Number, //过期日期,过期后不能激活
  islive: Boolean //判断是否激活
}

2 . 发送激活链接,其中包含用户名和激活码,如下面这样:

// 创建一个邮件对象
  var mail = {
    // 发件人
    from: '小静博客 <xiaojing@126.com>',
    // 主题
    subject: '激活账号',
    // 收件人
    to: usermess.email, //发送给注册时填写的邮箱
    // 邮件内容,HTML格式
    text: '点击激活:<a href="http://localhost:3000/checkCode?name='+ usermess.name +'&code='+ usermess.code + '" rel="external nofollow" ></a>'
  };

3 . 响应激活请求,根据激活链接的用户名进行查找,若用户存在则判断激活码是否一致,并判断激活码是否过期,全部正确则改变激活状态,此时激活成功,如下代码:

exports.checkCode = function (req, res){
  var username = req.query.name;
  var code = req.query.code;
  var outdate = req.query.outdate;
  User.findOne({name: username}, function (err, user){
    if (user.code === code && (user.date - Date.now()) > 0){
      User.update({name: username}, {islive: true}, function (err){
        if (err){
          res.render('login', {
            title: '登录',
            error: '激活失败!'
          });
        }else{
          res.render('login', {
            title: '登录',
            error: '激活成功请登录!'
          });
        }
      });
    }
  });
}

以上所述是小编给大家介绍的Node.js如何实现注册邮箱激活功能 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Javascript 继承实现例子
Aug 12 Javascript
js下通过getList函数实现分页效果的代码
Sep 17 Javascript
Visual Studio中js调试的方法图解
Jun 30 Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
微信小程序之电影影评小程序制作代码
Aug 03 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
Apr 16 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 Javascript
JavaScript中Object、map、weakmap的区别分析
Dec 15 Javascript
jQuery.Ajax()的data参数类型详解
Jul 23 #jQuery
vue axios用法教程详解
Jul 23 #Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 #Javascript
关于JavaScript中的this指向问题总结篇
Jul 23 #Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 #Javascript
js实现带进度条提示的多视频上传功能
Dec 13 #Javascript
基于javaScript的this指向总结
Jul 22 #Javascript
You might like
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
AngularJS内置指令
2015/02/04 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
浅谈Angular单元测试总结
2019/03/22 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
介绍Python的Django框架中的静态资源管理器django-pipeline
2015/04/25 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python for循环及基础用法详解
2019/11/08 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
社区包粽子活动方案
2014/01/21 职场文书
擅自离岗检讨书
2014/09/12 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
信访维稳承诺书
2015/05/04 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers