exportsemail = req res = 查询邮箱是否被占用 const userinfo = reqbody; const sqlStr = SELECT FROM userinfo WHERE email = ; dbquerysqlStr userinfoemail err results = if err ret
修改代码如下:
exports.email = (req, res) => {
// 查询邮箱是否被占用
const userinfo = req.body;
const sqlStr = `SELECT * FROM userinfo WHERE email = ?`;
db.query(sqlStr, userinfo.email, (err, results) => {
if (err) {
return res.cc(err)
}
// 判断用户名是否被占用
if (results.length > 0) {
return res.cc("邮箱已被占用,请更换!");
}
// 判断是否距离上次发送时间超过60秒
const currentTime = new Date();
const lastSendTime = new Date(req.session.lastSendTime || 0);
const timeDiff = currentTime - lastSendTime;
if (timeDiff < 60000) {
return res.cc("请稍后再发送验证码!");
}
// 生成四位随机数
var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var code = "";
function randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
for (var i = 1; i <= 4; i++) {
var txt = str[randomNum(0, str.length)];
code = code + txt;
}
// 发送邮箱验证码
let transporter = nodemailer.createTransport({
host: 'smtp.163.com',
port: 465, // SMTP 端口
auth: { //发送者的账户和授权码
user: '15576730892@163.com', //账户
pass: 'LRTYRUNEMKHWLVZS', //smtp授权码,到邮箱设置下获取
}
});
let mailOptions = {
from: '15576730892@163.com', // 发送者昵称和地址
to: userinfo.email, // 接收者的邮箱地址
subject: "验证码", // 邮件主题
html: code + "\n次元人欢迎您的到来!"
};
//发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
res.write('邮件发送成功 ID:', info.messageId);
});
// 更新最后发送时间
req.session.lastSendTime = currentTime;
res.send({
status: 0,
message: '验证码发送成功!',
results: code
});
})
}
上述代码中使用了req.session.lastSendTime来保存最后发送验证码的时间,如果距离上次发送时间不足60秒,则会返回错误提示。发送成功后,会更新req.session.lastSendTime为当前时间
原文地址: https://www.cveoy.top/t/topic/iA6c 著作权归作者所有。请勿转载和采集!