国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 14:06:53
字體:
來源:轉載
供稿:網(wǎng)友

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

1. 注冊郵箱

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

注冊成功后進行登錄,然后點擊導航欄的設置,選擇POP3/SMTP/IMAP,開啟POP3/SMTP/IMAP服務,設置授權碼就可以了。

2. 下載nodemailer插件

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

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

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

//email.js// 引入 nodemailerconst nodemailer = require('nodemailer');// 創(chuàng)建一個SMTP客戶端配置const config = {    host: 'smtp.163.com',    port: 465,    auth: {      user: 'xxxx@163.com', //剛才注冊的郵箱賬號      pass: 'xxxxxx' //郵箱的授權碼,不是注冊時的密碼    }  };// 創(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.jsvar 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)點擊該鏈接,您也可以將鏈接復制到瀏覽器地址欄訪問。 若如果您并未嘗試修改密碼,請忽略本郵件,由此給您帶來的不便請諒解。本郵件由系統(tǒng)自動發(fā)出,請勿直接回復!` //接收激活請求的鏈接};send(mail);

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


4. 驗證步驟

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

1 . 在自己定義的數(shù)據(jù)庫用戶數(shù)據(jù)結構中一定要有激活碼、過期時間、是否已經(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)點擊該鏈接,您也可以將鏈接復制到瀏覽器地址欄訪問。 若如果您并未嘗試修改密碼,請忽略本郵件,由此給您帶來的不便請諒解。本郵件由系統(tǒng)自動發(fā)出,請勿直接回復!` //接收激活請求的鏈接};send(mail);

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

// check email codeexports.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ǎng)易的郵箱有個授權限制,一定要好好檢查你注冊郵箱時的賬號和授權碼。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 旌德县| 鹰潭市| 凤山市| 柯坪县| 都昌县| 宝清县| 板桥市| 绥阳县| 获嘉县| 望都县| 伊宁市| 望奎县| 沾化县| 汉川市| 城市| 固始县| 无锡市| 建瓯市| 云和县| 庆元县| 红原县| 龙泉市| 新龙县| 乌拉特后旗| 壶关县| 方山县| 苍梧县| 临城县| 泾川县| 宁都县| 驻马店市| 库尔勒市| 呼玛县| 文昌市| 宜川县| 东方市| 达州市| 西藏| 奉新县| 托克逊县| 信阳市|