node 使用qq邮箱发送邮件 进行验证码校验

简介: node 使用qq邮箱发送邮件 进行验证码校验

一、安装邮箱发送模块依赖
npm i nodemailer -s
复制代码

yarn add nodemailer
复制代码
二、开启 POP3/SMTP 服务
你首先要有一个邮箱;由于需要使用 SMTP 方式发送,你还需要开启相关功能。你可以登录你的邮箱,然后开启这个设置。
以 QQ 邮箱为例:设置->账户->开启服务 (选择 POP3/SMTP 服务)->点击开启 (需要发送短信开启)->授权码生成。

三、创建 email.js
'use strict'
const nodemailer = require('nodemailer')

// 创建发送邮件的对象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com', // 发送方邮箱 qq 通过lib/wel-konw
port: 465,
secure: true, // true for 465, false for other ports
auth: {

user: '******@qq.com', // 发送方邮箱地址
pass: '******' // mtp 验证码 这个有了才可以发送邮件,可以qq邮箱去查看自己的码

}
})

function send(mail, code) {
// 邮件信息
let mailobj = {

from: '"发送者姓名" <发送者邮箱>', // sender address
to: mail, // 接收者邮箱 可以是多个 以,号隔开
subject: 'hello', // Subject line
// 发送text或者html格式
text: `xxxxx`
// html:`<h1>xxxx</h1>`

}

return new Promise((reslove, reject) => {

// 发送邮件
transporter.sendMail(mailobj, (err, data) => {
  if (err) {
    console.log(err)
    reject()
  } else {
    reslove()
  }
})

})
}
复制代码
四、发送验证码接口
//验证码就放着内存中了。正常开发也可以放redis 或者 数据库内
let codes = {}
let count = {}
router.post('/getMailCode', (req, res) => {
let { mail } = req.body
// 我前端已做邮箱校验 这里我只做了是否有值判断
if (mail) {

let code = parseInt(Math.random() * 10000) // 随机验证码
codes[mail] = code
count[mail] = 3 // 有效次数
//验证码5分钟内有效 过了5分钟清除
setTimeout(() => {
  delete codes[mail]
  delete count[mail]
}, 300000)
mailSend
  .send(mail, code)
  .then(() => {
    res.send({ code: 200, msg: '验证码发送成功' })
  })
  .catch(err => {
    res.send({ code: -1, msg: '验证码发送失败' })
  })

} else {

res.send({ err: -1, msg: '参数错误' })

}
})

结语
如果是用短信验证码的话,无疑成本高,因为短信是收费的。想想做一个学习用的网站,还是选择邮件发送验证码吧。

目录
相关文章
|
4月前
|
小程序 前端开发 JavaScript
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
node使用nodemailer在本地可以正常发送邮件,放服务器后无法发送报错
node使用nodemailer发送邮件
node使用nodemailer发送邮件
|
2月前
【node】图片验证码(svg-captcha)
【node】图片验证码(svg-captcha)
122 0
|
4月前
|
存储 缓存 NoSQL
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
node实战——koa给邮件发送验证码并缓存到redis服务(node后端储备知识)
62 0
|
JavaScript 安全 Java
一个Node.js图形验证码的生成
本文是我在一次基于Node.js环境下开发滑动拼图验证码,下面是我对这次项目的总结。
一个Node.js图形验证码的生成
|
JavaScript
Node.js使用Nodemailer发送邮件
Node.js使用Nodemailer发送邮件
385 0
Node.js使用Nodemailer发送邮件
|
JavaScript 数据库
Node(十)之Mongoose配合Node路由实现邮箱注册登录(Post版)
Node(十)之Mongoose配合Node路由实现邮箱注册登录(Post版)
126 1
|
云安全 JSON 资源调度
node.js实现阿里云配置发送短信验证码
node.js实现阿里云配置发送短信验证码
1455 0
node.js实现阿里云配置发送短信验证码
Node(七)之express框架,简单的邮箱注册小案例(Get方式)
Node(七)之express框架,简单的邮箱注册小案例(Get方式)
186 0