Node.js 邮箱验证功能:生成随机验证码并发送邮件

该代码段展示了如何使用 Node.js 和 Nodemailer 库实现邮箱验证功能。

功能流程:

  1. 查询邮箱是否被占用: 使用 SQL 语句查询数据库,判断用户输入的邮箱是否已存在。
  2. 生成四位随机验证码: 使用随机数函数生成一个 4 位随机验证码。
  3. 更新数据库: 将用户邮箱和生成的验证码更新到数据库中。
  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 服务器地址为您的真实信息。

本示例代码仅供参考,您可以根据具体需求进行修改和扩展。

Node.js 邮箱验证功能:生成随机验证码并发送邮件

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

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