Node.js 使用 nodemailer 实现自动发送邮箱验证码
本文详细介绍如何在 Node.js 项目中通过 nodemailer 模块实现自动发送邮箱验证码。内容涵盖 QQ 邮箱 SMTP 配置、模块安装、代码封装及 async/await 异步处理机制,帮助开发者以低成本方式集成邮件验证功能。
引言
在 Web 开发过程中,发送验证码是常见的需求。由于短信验证码涉及额外费用,使用邮箱验证码成为一种经济高效的替代方案。本文将演示如何利用 Node.js 自动发送邮箱验证码。
请按照以下步骤操作,即可轻松实现邮箱自动发送功能。
1. QQ邮箱设置




2. 安装nodemailer
npm i -S nodemailer3.配置信息
//1. 导入nodemailer
const nodemailer = require('nodemailer')
//2. 创建运输对象
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
secure: true,
auth: {
user: '5641132547@qq.com',//输入你开启SMTP服务的QQ邮箱
pass: 'oxpbfzjtnurbjhei' //输入我们刚才获得的那串字符
}
})
//3.配置发送邮件的信息
let mailOptions = {
from: '5641132547@qq.com', // 发送者,也就是你的QQ邮箱
to: '12938203121@qq.com', // 接受者邮箱,可以同时发送多个,以逗号隔开
subject: '测试发送邮件', // 邮件标题
html: `
<p>这是我的测试邮件</p>
<p>哈哈哈,收到请回复</p>
` //邮件内容,以html的形式输入,在邮件中会自动解析显示
};
//4.发送邮件
transporter.sendMail(mailOptions, function(err, data){
//回调函数,用于判断邮件是否发送成功
...
})
4.综合
实际应用中,发送邮件通常作为工具模块使用,目标邮箱地址往往是动态变化的。因此,我们需要将发送逻辑封装为可复用的函数。以下是完整的代码实现。
/* 文件名: sendEmail.js */
const nodemailer = require('nodemailer')
let transporter = nodemailer.createTransport({
host: 'smtp.qq.com',
secure: true,
auth: {
user: '5641132547@qq.com',
pass: 'asdasfsfwqqw'
}
});
module.exports = async function fn(email, code){
let status = null
await new Promise((resolve, reject) => {
transporter.sendMail({
from: '5641132547@qq.com',
to: email,
subject: '网站账户注册验证码',
html: `
<p>网站账户注册验证码:</p>
<span style="font-size: 18px; color: red">` + code + `</span>`
}, function (err, info) {
if (err) {
status = 0
reject()
} else {
status = 1
resolve()
}
});
})
return status
}
/* 文件名 main.js */
//导入我们sendEmail.js文件中导出的东西
const sendEmail = require('./sendEmail.js')
//此时sendEmail是一个函数,可传参数有 email, code , 执行完会返回一个status, 用于判断是否发送成功
const result = sendEmail('190380192@qq.com', 568712)
if(result === 0) {
console.log('邮件发送失败')
}
else if(result === 1) {
console.log('邮件发送成功')
}
执行后,您将收到如下所示的邮件。

5.讲解
在上述代码封装中,可能部分开发者对 async 和 await 关键字不太熟悉。此处简要说明其用法,如需深入了解,建议查阅 ES7 相关文档。
首先,发送邮件属于异步操作。async 用于声明函数中包含异步逻辑,而 await 后必须跟随一个 Promise 对象。在 async 函数内部,代码会暂停执行,直到 await 后的 Promise 状态变为 resolved 或 rejected,随后继续向下执行。
结束语
关于 Node.js 模拟发送验证码的教程到此结束。如需获取更多 Node.js 自动发送邮件验证码的相关资料,请关注本站其他文章。
macOS卸载Node.js指南:区分Homebrew与pkg安装包的处理方式
2026-11-05 11:28:12
JS逆向入门:浏览器Console调试与Node.js环境搭建指南
2026-11-05 10:57:15
Node.js 大版本升级需要注意哪些破坏性变更
2026-11-03 20:35:44
Node.js官网LTS版与Current版有什么区别
2026-11-03 19:33:49
Windows彻底卸载Node.js:清理AppData残留与PATH环境变量
2026-11-03 19:15:35
