nodejs邮箱验证码

邮箱验证码

const regEmail = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/ //验证邮箱正则
router.post("/verification", async ctx => {
    let EMAIL = ctx.request.body.e_mail //req为请求体对象 我使用的是post请求方式,
    const regPassword = /^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[._~!@#$^&*])[A-Za-z0-9._~!@#$^&*]{8,18}$/ //密码邮箱正则
    const regUsername = /^(?=.*[a-zA-Z])(?=.*[0-9])[A-Za-z0-9]{4,16}$/ // 账户正则所以通过req.body获取用户提交的邮箱
    if (regEmail.test(EMAIL) ) {  //邮箱验证通过
        // 验证邮箱是否已经添加
        let sql4 = `select id from user where email = '${EMAIL}'`
        let result4 =await queryFn(sql4)
        if(result4.length > 0){
            ctx.body = returnMsg(2, "发送验证码失败!", '该邮箱已注册')
            return
        }
        let code = randomFns()
        await new Promise((res, rej) => {
            transport.sendMail({
                from: 'xxxxxxx@163.com', // 发件邮箱
                to: EMAIL, // 收件列表
                subject: '验证你的电子邮件', // 标题
                html: `
                <p>你好!</p>
                <p>您正在注册xxx后台账号</p>
                <p>你的验证码是:<strong style="color: #ff4e2a;">${code}</strong></p>
                <p>***该验证码5分钟内有效***</p>` // html 内容
                },
                 async (error, data)=> {
                    // 发送成功
                })
               
        }).then((result)=>{
            ctx.body = returnMsg(0, "验证码发送成功", result)
            }
        ).catch((error)=>{
            ctx.body = returnMsg(2, "发送验证码失败!", error)
            transport.close(); // 如果没用,关闭连接池
        })
    } else {
        ctx.body = returnMsg(2, "发送验证码失败!", '参数格式错误')
    }
})

const randomFns = () => { // 生成6位随机数
    let code = ""
    for (let i = 0; i < 6; i++) {
        code += parseInt(Math.random() * 10)
    }
    return code
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值