Node.js 邮箱验证功能:生成随机验证码并发送邮件
Node.js 邮箱验证功能:生成随机验证码并发送邮件
该代码段展示了如何使用 Node.js 和 Nodemailer 库实现邮箱验证功能。
功能流程:
- 查询邮箱是否被占用: 使用 SQL 语句查询数据库,判断用户输入的邮箱是否已存在。
- 生成四位随机验证码: 使用随机数函数生成一个 4 位随机验证码。
- 更新数据库: 将用户邮箱和生成的验证码更新到数据库中。
- 发送邮件: 使用 Nodemailer 库发送包含验证码的邮件到用户邮箱。
代码示例:
exports.email = (req, res) => {
// 查询邮箱是否被占用
const userinfo = req.body;
const sqlStr1 = `SELECT * FROM userinfo WHERE email = ?`;
db.query(sqlStr1, userinfo.email, (err, results) => {
if (err) {
return res.cc(err)
}
// 判断用户名是否被占用
if (results.length > 0) {
return res.cc('邮箱已被占用,请更换!');
}
});
// 生成四位随机数
var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var code = '';
for (var i = 1; i <= 4; i++) {
var txt = str[randomNum(0, str.length)];
code = code + txt;
function randomNum(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
}
// 插入用户邮箱和验证码
const sqlStr2 = `update userinfo set email=?,ecode=? where username=? ;`;
db.query(sqlStr2, [userinfo.email, code, userinfo.username], (err, results) => {
if (err) {
return res.cc(err);
}
if (results.affectedRows !== 1) {
return res.cc('邮箱插入失败!请稍后再试!');
}
// 发送邮箱验证码
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 + '
次元人欢迎您的到来!'
};
//发送邮件
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
console.log('邮件发送成功 ID:', info.messageId);
res.write('邮件发送成功 ID:', info.messageId);
res.end();
});
res.cc('验证码发送成功!', 0);
})
}
代码说明:
- 为了避免 SQL 注入,代码使用占位符的方式传递参数到 SQL 语句中。
- 随机数生成函数
randomNum放置在循环内部,确保每次循环生成不同的随机数。 - 使用 Nodemailer 库发送邮件,包括设置邮件服务器、发送者信息、接收者信息、邮件主题和内容等。
注意:
- 需要安装 Nodemailer 库:
npm install nodemailer - 替换示例代码中的邮箱地址、密码和 SMTP 服务器地址为您的真实信息。
本示例代码仅供参考,您可以根据具体需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/qhKu 著作权归作者所有。请勿转载和采集!