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实现的可隐藏重现的靠边悬浮层实例代码
May 27 Javascript
jQuery老黄历完整实现方法
Jan 16 Javascript
简介JavaScript中的sub()方法的使用
Jun 08 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
原生Javascript插件开发实践
Jan 09 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
使用JavaScript破解web
Sep 28 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 Javascript
EXTJS7实现点击拖拉选择文本
Dec 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
用Simple Excel导出xls实现方法
2012/12/06 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
js比较日期大小的方法
2015/05/12 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
vue代码分割的实现(codesplit)
2018/11/13 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
2019/09/26 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
javascript实现时钟动画
2020/12/03 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python入门篇之文件
2014/10/20 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
运动会广播稿400字
2014/01/25 职场文书
九年级英语教学反思
2014/01/31 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
2015年中学体育教师工作总结
2015/10/23 职场文书
公司周年庆寄语
2019/06/21 职场文书