nodejs nodemailer发送qq邮箱验证码

218 阅读1分钟

安装

npm i nodemailer

新建nodemailer.js

const nodemailer = require('nodemailer')

const nodeMail = nodemailer.createTransport({
    service: 'qq', //类型qq邮箱
    port: 465,
    secure: true,
    auth: {
        user: 'xxxxxx@qq.com', // 发送方的邮箱
        pass: 'xxxxxxxxxx' // stmp授权码
    }
});
module.exports = nodeMail

获取secure和port

在根目录下, node_modeles/nodemailer/lib/well-known/services.json

Snipaste_2022-10-03_15-57-22.png

获取stmp授权码

在qq邮箱 设置 账户

1.png 开启此服务获取stmp授权码

nodejs

const express = require('express')
const nodeMail = require('./nodemailer')
// import nodeMail from './nodemailer'
const app = express()

//配置cors跨域
const cors = require('cors')
app.use(cors())

//邮箱验证
app.post('/api/email', async (req, res) => {
    const email = req.body.email
    const code = String(Math.floor(Math.random() * 1000000)).padEnd(6, '0') //生成6位随机验证码
    //发送邮件
    const mail = {
        from: `"大帅哥"<xxxx@qq.com>`,// 发件人
        subject: '验证码',//邮箱主题
        to: email,//收件人
        // 邮件内容,用html格式编写
        html: `
            <p>验证码:<strong style="color:orangered;">${code}</strong></p>
        ` 
    };
    const result = await nodeMail.sendMail(mail, (err, info) => {
        if (!err) {
            res.json({msg: "验证码发送成功"})
        } else {
            res.json({msg: "验证码发送失败,请稍后重试"})
        }
    })
    // 将验证码存到数据库中  再定时清除验证码
    console.log(req.body);
    localStorage.setItem("code",code);
    setTimeout(() => {
        localStorage.removeItem("code")
    },1000*60);
});


app.listen(80,() => {
    console.log('success run in http://127.0.0.1');
})

模拟发送验证码

2.png