欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js實現(xiàn)注冊郵箱激活功能的方法示例

 更新時間:2018年03月23日 13:50:46   作者:極客教程  
現(xiàn)在很多網(wǎng)站都需要有注冊郵箱激活的功能,本篇文章主要介紹了Node.js實現(xiàn)注冊郵箱激活功能的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在做自己的node項目極客教程時,需要開發(fā)一個注冊郵箱激活的功能,這個功能非常常見,當(dāng)我們注冊一個賬號時,肯定會有這步,下面看下如何實現(xiàn)這個功能。

1. 注冊郵箱

先注冊一個支持發(fā)送驗證郵件的郵箱,我這里注冊的是網(wǎng)易的163郵箱,所以下面都是以163郵箱作為發(fā)件郵箱

注冊成功后進行登錄,然后點擊導(dǎo)航欄的設(shè)置,選擇POP3/SMTP/IMAP,開啟POP3/SMTP/IMAP服務(wù),設(shè)置授權(quán)碼就可以了。

2. 下載nodemailer插件

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

3. 編寫發(fā)送郵件代碼

3.1 對發(fā)送激活郵件代碼進行封裝,然后導(dǎo)出:

//email.js

// 引入 nodemailer
const nodemailer = require('nodemailer');

// 創(chuàng)建一個SMTP客戶端配置
const config = {
    host: 'smtp.163.com',
    port: 465,
    auth: {
      user: 'xxxx@163.com', //剛才注冊的郵箱賬號
      pass: 'xxxxxx' //郵箱的授權(quán)碼,不是注冊時的密碼
    }
  };

// 創(chuàng)建一個SMTP客戶端對象
const transporter = nodemailer.createTransport(config);

// 發(fā)送郵件
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');


// 創(chuàng)建一個郵件對象
var mail = {
  // 發(fā)件人
  from: '極客教程 <xxxx@163.com>',
  // 主題
  subject: '[極客教程]激活郵箱賬號',
  // 收件人
  to: 'xxxx@qq.com',
  // 郵件內(nèi)容,HTML格式
  text: `尊敬的${user.name},您好!點擊鏈接即可激活您的極客教程
      網(wǎng)賬號,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}為保障您的帳號安全,請在24小時內(nèi)點擊該鏈接,您也可以將鏈接復(fù)制到瀏覽器地址欄訪問。 若如果您并未嘗試修改密碼,請忽略本郵件,由此給您帶來的不便請諒解。本郵件由系統(tǒng)自動發(fā)出,請勿直接回復(fù)!` //接收激活請求的鏈接
};
send(mail);

成功就可以在測試的郵箱看到所發(fā)的信息。


4. 驗證步驟

簡單的講一下如何實現(xiàn)郵箱驗證。

1 . 在自己定義的數(shù)據(jù)庫用戶數(shù)據(jù)結(jié)構(gòu)中一定要有激活碼、過期時間、是否已經(jīng)激活的字段,用于在激活時進行判斷;

{
  code: String, //激活碼,格式自己定義
  date: Number, //過期日期,過期后不能激活
  islive: Boolean //判斷是否激活
}

2 . 發(fā)送激活鏈接,其中包含用戶名和激活碼,如下面這樣:

// 創(chuàng)建一個郵件對象
var mail = {
  // 發(fā)件人
  from: '極客教程 <xxxx@163.com>',
  // 主題
  subject: '[極客教程]激活郵箱賬號',
  // 收件人
  to: 'xxxx@qq.com',
  // 郵件內(nèi)容,HTML格式
  text: `尊敬的${user.name},您好!點擊鏈接即可激活您的極客教程
      網(wǎng)賬號,http://localhost:3000/checkCode?name=${user.name}&code=${user.code}為保障您的帳號安全,請在24小時內(nèi)點擊該鏈接,您也可以將鏈接復(fù)制到瀏覽器地址欄訪問。 若如果您并未嘗試修改密碼,請忽略本郵件,由此給您帶來的不便請諒解。本郵件由系統(tǒng)自動發(fā)出,請勿直接回復(fù)!` //接收激活請求的鏈接
};
send(mail);

3 . 響應(yīng)激活請求,根據(jù)激活鏈接的用戶名進行查找,若用戶存在則判斷激活碼是否一致,并判斷激活碼是否過期,全部正確則改變激活狀態(tài),此時激活成功,如下代碼:

// 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. 遇到的問題

開發(fā)中遇到如下問題:

{ [AuthError: Invalid login - 535 Error: authentication failed]
name: ‘AuthError',
data: ‘535 Error: authentication failed',
stage: ‘a(chǎn)uth' }

smtp服務(wù)器驗證不通過,因為網(wǎng)易的郵箱有個授權(quán)限制,一定要好好檢查你注冊郵箱時的賬號和授權(quán)碼。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入Node TCP模塊的理解

    深入Node TCP模塊的理解

    這篇文章主要介紹了深入Node TCP模塊的理解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • node.js中實現(xiàn)kindEditor圖片上傳功能的方法教程

    node.js中實現(xiàn)kindEditor圖片上傳功能的方法教程

    最近在做一個類似于論壇的系統(tǒng),帖子需要進行圖文并茂的顯示,所以用到了富文本編輯器:kindeditor,下面這篇文章主要給大家介紹了在node.js中實現(xiàn)kindEditor圖片上傳功能的方法教程,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • 一文詳解nodejs的path模塊使用

    一文詳解nodejs的path模塊使用

    這篇文章主要為大家介紹了nodejs的path模塊使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 詳解node Async/Await 更好的異步編程解決方案

    詳解node Async/Await 更好的異步編程解決方案

    這篇文章主要介紹了詳解Async/Await 更好的異步編程解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • node.js程序作為服務(wù)并在windows下開機自啟動(用forever)

    node.js程序作為服務(wù)并在windows下開機自啟動(用forever)

    這篇文章主要介紹了node.js程序作為服務(wù)并在windows下開機自啟動的相關(guān)資料,因為實現(xiàn)的功能比較簡單,沒有選擇功能比較強大的pm2,文中選擇利用了forever,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • 安裝nvm實現(xiàn)切換node

    安裝nvm實現(xiàn)切換node

    這篇文章主要介紹了安裝nvm實現(xiàn)切換node的詳細過程,本文給大家講解的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Node.js中npx命令的使用方法及場景分析

    Node.js中npx命令的使用方法及場景分析

    NPM(Node Package Manager) 是Node.js提供的一個包管理器, 可以使用 NPM 來安裝 node.js 包 ,npm 是從5.2版開始, 增加(自帶)了 npx 命令,本文給大家分享Node.js npx命令使用,需要的朋友一起看看吧
    2021-08-08
  • 詳解如何在NodeJS應(yīng)用程序中處理多個API請求

    詳解如何在NodeJS應(yīng)用程序中處理多個API請求

    NodeJS默認是異步的,這意味著它已經(jīng)能夠同時處理多個請求,但它只適用于I/O操作,如HTTP請求、文件系統(tǒng)操作、數(shù)據(jù)庫查詢、實時聊天應(yīng)用等,在處理CPU密集型任務(wù)時,可能需要很長時間,這就是為什么NodeJS提供了一些我們將在下面介紹的特定包
    2023-12-12
  • 從零開始學(xué)習(xí)Node.js系列教程之基于connect和express框架的多頁面實現(xiàn)數(shù)學(xué)運算示例

    從零開始學(xué)習(xí)Node.js系列教程之基于connect和express框架的多頁面實現(xiàn)數(shù)學(xué)運算示例

    這篇文章主要介紹了Node.js基于connect和express框架的多頁面實現(xiàn)數(shù)學(xué)運算,簡單講述了connect和express框架的原理及數(shù)學(xué)運算相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 深入剖析Express cookie-parser中間件實現(xiàn)示例

    深入剖析Express cookie-parser中間件實現(xiàn)示例

    本篇文章主要介紹了深入剖析Express cookie-parser中間件實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論