Home  >  Article  >  Web Front-end  >  Node.js implements the example process of registering email activation

Node.js implements the example process of registering email activation

零下一度
零下一度Original
2017-07-24 15:38:341530browse

Today I learned how node implements the email activation function. This function is very common. When we register an account, there will definitely be this step. Let’s take a look at how to implement this function

1. First register an email address that supports sending verification emails. NetEase’s 126 email address can be

Log in after successful registration, then click Settings in the Navigation column and select POP3/SMTP/IMAP, enable the POP3/SMTP/IMAP service and set the authorization code.

2. Download the nodemailer plug-in

Enter on the command line: npm install --save nodemailer

3. Write the code to send the email:

1. Encapsulate the code to send the activation email, and then export it:

//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. Carry out Test:


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

If successful, you can see the message sent in the test mailbox.

4. Verification steps

As far as a personal blog project I wrote before, I will briefly talk about how to implement itE-mail verification.

1. In the database user data structure you define, there must be fields such as activation code, expiration time, and whether it has been activated, which are used to judge during activation;


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

2 . Send an activation link containing the username and activation code, as follows:


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

3 . Respond to the activation request, based on the user's activation link Search by name, if the user exists, determine whether the activation code is consistent, and determine whether the activation code has expired. If all are correct, change the activation status. At this time, the activation is successful, as follows:


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(&#39;login&#39;, {
            title: &#39;登录&#39;,
            error: &#39;激活失败!&#39;
          });
        }else{
          res.render(&#39;login&#39;, {
            title: &#39;登录&#39;,
            error: &#39;激活成功请登录!&#39;
          });
        }
      });
    }
  });
}

The above is the detailed content of Node.js implements the example process of registering email activation. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn