node.js如何发送验证码到邮箱?

在平时开发中,我们经常需要获取验证码来验证身份,有很多方式可以获取,大多数都需要收费,这里推荐一个免费获取验证码发送的方式。

  1. 使用163免费邮箱获取授权码

  1. 打开https://mail.163.com/登录你的163邮箱,然后点击上方的设置

  1. 开通POP3/SMTP/IMAP服务

使用注册时的手机号发送短信

发送后点击我已发送,就可以得到授权码了

注意:一定要在这个页面保存好这个授权码,后面查不到的!!!

  1. 下载nodemailer

//下载
npm i nodemailer -S
//引入
const nodemailer = require("nodemailer");
//配置信息
const transporter = nodemailer.createTransport({
  service: '163',  //  邮箱
  secure: true,    //  安全的发送模式
  auth:{
      user: 'XXXX@163.com', //  发件人邮箱(第一步的邮箱)
      pass: 'XXXXXXXXXXXXXXXXXX' //  授权码 (第一步获取到的授权码)
  }
});
// 发送邮件到指定邮箱
transporter.sendMail({
    from:"XXX<XXXX@163.com>", //前面可以写发件人名字后面的邮箱配置为上方的邮箱地址
    subject: '验证码', //邮件标题
    to:`${req.body.email}`, //配置目标邮箱,可以从前端传来的数据中获取
    text:`您的验证码是:${verifyCode} , 有效期一分钟 , 如非本人操作 , 请忽略`, //邮件内容一般是发送验证码
},(err,data)=>{
    if (err) {
        console.log(err);
      }
      else{
        console.log(data);
      }
})
  1. 使用string-random生成随机字符串

//下载
npm i string-random -S
//引入
const random = require('string-random');
//使用
random([length],[options])  //length代表字符串长度 options配置项
console.log(random());        //jcBvYzfa
console.log(random(16));      //d9oq0A3vooaDod8X
console.log(random(16, {numbers: false}));     //AgfPTKheCgMvwNqX
console.log(random(16, {letters: false}));     //0889014544916637
console.log(random(16, {letters: 'ABCDEFG'})); //055B1627E43GA7D8
console.log(random(16, {specials: true}));     //,o=8l{iay>AOegW[
console.log(random(16, {specials: true, numbers: false, letters: false}));    //)-[+$^%+$|)-{(]%
console.log(random(16, {specials: ':;', numbers: false, letters: false}));    //:;:;;;:;;;;;;;::
console.log(random(16, true)); //SMm,EjETKMldIM/J
  1. 最后附上完整代码

const nodemailer = require("nodemailer"); //引入邮件模块
const random = require('string-random'); //引入随机字符串模块

const transporter = nodemailer.createTransport({
  service: '163',  //  邮箱
  secure: true,    //  安全的发送模式
  auth:{
      user: 'XXXX@163.com', //  发件人邮箱
      pass: 'XXXXXXXXXXX' //  授权码
  }
});
let verifyCode = random(6,{letters:false})
transporter.sendMail(
  {
      // 发件人邮箱
      from: 'XXX<XXXXXXXXX@163.com>',
      // 邮件标题
      subject: '验证码',
      // 目标邮箱
      to: `${req.body.email}`,
      // 邮件内容
      text: `您的验证码是:${verifyCode} , 有效期一分钟 , 如非本人操作 , 请忽略`
  },
  (err, data) => {
      if (err) {
        console.error(err);
      }
      else{
        console.log(data);
      }
  }
);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值