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 相关文章推荐
JQUERY CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
jquery得到font-size属性值实现代码
Sep 30 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
jQuery之选项卡的简单实现
Feb 28 Javascript
js实现的牛顿摆效果
Mar 31 Javascript
JavaScript中的this机制
Jan 30 Javascript
JavaScript 深层克隆对象详解及实例
Nov 03 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
Apr 17 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(3)
2006/10/09 PHP
php的控制语句
2006/10/09 PHP
第五节--克隆
2006/11/16 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
php-msf源码详解
2017/12/25 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
JavaScript简单获取系统当前时间完整示例
2016/08/02 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
2013/01/30 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
机关财务管理制度
2014/01/17 职场文书
美容院考勤制度
2014/01/30 职场文书
销售人才自我评价范文
2014/09/27 职场文书
中学生自我评价范文
2015/03/03 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
教你用python实现12306余票查询
2021/06/30 Python