Node.js + nodemailer 实现发送验证码,实现qq注册邮箱

811 阅读1分钟

记录下自己学习过程,有说的不对的地方请大家见谅并指出

这里以QQ邮箱作为演示

第一步

进入QQ邮箱并登录 => 点击设置 => 点击账户 然后往下滑,找到他。如果没有开启的话,点击开启即可 Snipaste_2022-03-25_13-58-58.png

第二步

Nodejs项目中下载  nodemailer

npm i nodemailer 下载后创建一个文件,将他引入

//引入nodemailer.js
const nodemailer = require("nodemailer");

//创建一个smtp服务器
const config = {
  host: "smtp.qq.com", // 邮箱服务的主机,QQ邮箱为例
  port: 465,// 邮箱服务的主机对应的端口
  auth: {
    user: "xxx@qq.com", // 这里是你使用哪个QQ邮箱账号发送验证码
    pass: "xxx", //邮箱的授权码,不是注册时的密码,等你开启的stmp服务自然就会知道了
  },
};
// 创建一个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);
  });
};

然后在发送验证码的接口文件中引入该文件

const nodemailer = require("../utils/nodemailer");
 var mail = {
 // 发件人
from: "<2474373421@qq.com>",
// 主题
subject: "注册", //邮箱主题
 // 收件人
to: email, //前台传过来的邮箱
// 邮件内容,HTML格式
text: "您的验证码是:" + code + ",请不要告诉别人您的验证码", //发送验证码
};
nodemailer(mail); //发送邮件
 });

code验证码生成

// 获取六位数随机数
const createSixNum = () => {
  var Num = "";
  for (var i = 0; i < 6; i++) {
    Num += Math.floor(Math.random() * 10);
  }
  return Num;
};

验证码校验可以根据自己操作来,我这里是新建了一个表用来单独存储用户邮箱及验证码