exports.email = (req, res) => {\n // 查询邮箱是否被占用\n const userinfo = req.body;\n const sqlStr1 = SELECT * FROM userinfo WHERE email = ?;\n db.query(sqlStr1, [userinfo.email], (err, results) => {\n if (err) {\n return res.cc(err)\n }\n // 判断用户名是否被占用\n if (results.length > 0) {\n return res.cc("邮箱已被占用,请更换!");\n }\n\n // 生成四位随机数\n var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";\n var code = "";\n function randomNum(min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n }\n for (var i = 1; i <= 4; i++) {\n var txt = str[randomNum(0, str.length)];\n code = code + txt;\n }\n\n // 插入用户邮箱和验证码\n const sqlStr2 = update userinfo set email=?,ecode=? where username=? ;;\n db.query(sqlStr2, [userinfo.email, code, userinfo.username], (err, results) => {\n if (err) {\n return res.cc(err);\n }\n if (results.affectedRows !== 1) {\n return res.cc("邮箱插入失败!请稍后再试!");\n }\n // 发送邮箱验证码\n let transporter = nodemailer.createTransport({\n host: 'smtp.163.com',\n port: 465, // SMTP 端口\n auth: { //发送者的账户和授权码\n user: '15576730892@163.com', //账户\n pass: 'LRTYRUNEMKHWLVZS', //smtp授权码,到邮箱设置下获取\n }\n });\n let mailOptions = {\n from: '15576730892@163.com', // 发送者昵称和地址\n to: userinfo.email, // 接收者的邮箱地址\n subject: "验证码", // 邮件主题\n html: code + "\n次元人欢迎您的到来!"\n };\n //发送邮件\n transporter.sendMail(mailOptions, (error, info) => {\n if (error) {\n return console.log(error);\n }\n console.log('邮件发送成功 ID:', info.messageId);\n res.write('邮件发送成功 ID:', info.messageId);\n res.end();\n });\n res.cc("验证码发送成功!", 0);\n })\n });\n}\n\n"邮箱插入失败"的原因可能有以下几种可能性:\n\n1. SQL语句错误:检查SQL语句是否正确,包括表名、列名、语法等。\n2. 数据库连接错误:检查数据库连接是否正常,包括数据库配置、连接池等。\n3. 用户名不存在:在更新用户邮箱和验证码之前,需要确保用户名存在,否则会导致更新失败。\n4. 数据库操作错误:检查数据库操作是否正确,包括参数传递、操作结果等。\n5. 其他未知错误:可能存在其他未知的错误导致邮箱插入失败,需要进一步排查和调试。\n\n建议在代码中增加错误日志输出,以便更好地定位和解决问题。

Node.js 邮箱验证系统:实现邮箱发送验证码功能

原文地址: https://www.cveoy.top/t/topic/qhLp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录