• 技术文章 >web前端 >js教程

    Node.js实现注册邮箱激活功能的方法示例

    亚连亚连2018-05-29 11:55:33原创1164
    现在很多网站都需要有注册邮箱激活的功能,本篇文章主要介绍了Node.js实现注册邮箱激活功能的方法示例,现在分享给大家,也给大家做个参考。

    在做自己的node项目极客教程时,需要开发一个注册邮箱激活的功能,这个功能非常常见,当我们注册一个账号时,肯定会有这步,下面看下如何实现这个功能。

    1. 注册邮箱

    先注册一个支持发送验证邮件的邮箱,我这里注册的是网易的163邮箱,所以下面都是以163邮箱作为发件邮箱

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

    2. 下载nodemailer插件

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

    3. 编写发送邮件代码

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

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

    3.2 进行测试:

    //sendtest.js
    
    var send = require('./email.js');
    
    
    // 创建一个邮件对象
    var mail = {
      // 发件人
      from: '极客教程 <xxxx@163.com>',
      // 主题
      subject: '[极客教程]激活邮箱账号',
      // 收件人
      to: 'xxxx@qq.com',
      // 邮件内容,HTML格式
      text: `尊敬的${user.name},您好!点击链接即可激活您的极客教程
          网账号,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}为保障您的帐号安全,请在24小时内点击该链接,您也可以将链接复制到浏览器地址栏访问。 若如果您并未尝试修改密码,请忽略本邮件,由此给您带来的不便请谅解。本邮件由系统自动发出,请勿直接回复!` //接收激活请求的链接
    };
    send(mail);

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

    大前端零基础入门到就业:进入学习


    4. 验证步骤

    简单的讲一下如何实现邮箱验证。

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

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

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

    // 创建一个邮件对象
    var mail = {
      // 发件人
      from: '极客教程 <xxxx@163.com>',
      // 主题
      subject: '[极客教程]激活邮箱账号',
      // 收件人
      to: 'xxxx@qq.com',
      // 邮件内容,HTML格式
      text: `尊敬的${user.name},您好!点击链接即可激活您的极客教程
          网账号,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}为保障您的帐号安全,请在24小时内点击该链接,您也可以将链接复制到浏览器地址栏访问。 若如果您并未尝试修改密码,请忽略本邮件,由此给您带来的不便请谅解。本邮件由系统自动发出,请勿直接回复!` //接收激活请求的链接
    };
    send(mail);

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

    // check email code
    exports.checkCode = function (req, res){
      var username = req.query.name;
      var code = req.query.code;
      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.json({error: true})
                  }else{
                      console.log(user)
                      res.json({ok: true})
                  }
              });
          }else{
            res.json({
              email: user.mail,
              failure: true
            })
          }
      });
    }

    5. 遇到的问题

    开发中遇到如下问题:

    { [AuthError: Invalid login - 535 Error: authentication failed]
    name: ‘AuthError',
    data: ‘535 Error: authentication failed',
    stage: ‘auth' }

    smtp服务器验证不通过,因为网易的邮箱有个授权限制,一定要好好检查你注册邮箱时的账号和授权码。

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    js中apply和Math.max()函数的问题及区别介绍

    浅谈Vue内置component组件的应用场景

    vue2中使用less简易教程

    以上就是Node.js实现注册邮箱激活功能的方法示例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    快捷开发Web应用及小程序:点击使用

    支持亿级表,高并发,自动生成可视化后台。

    专题推荐:javascript Node.js 激活
    上一篇:使用create-react-app构建React开发环境步奏详解 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 一文聊聊Node中的fs文件模块和path路径模块(案例分析)• 实例JavaScript之实现数值的动态变化• 一文聊聊Node.js中的进程与子进程• 一文教你JavaScript如何实现分支优化• 一文详解Node.js中的npm与包【万字教程】
    1/1

    PHP中文网