邮箱验证码
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
}