Node.js 使用 Nodemailer 发送 QQ 邮箱教程

作者:终端旅客时间:2026-10-23 15:58:17浏览:422

本文介绍如何在 Node.js 项目中通过 Nodemailer 模块发送电子邮件。重点讲解 QQ 邮箱的 SMTP 配置方法,包括获取授权码、创建传输对象及构建邮件内容。提供完整代码示例,涵盖验证码生成与发送流程,帮助开发者快速实现邮件通知功能。

电子邮件与 Node.js 邮件发送概述

电子邮件是一种利用电子手段进行信息交换的通信方式,也是互联网上应用最为广泛的服务之一。借助网络邮件系统,用户可以以极低的成本(无论目的地何处,仅需支付网络费用)和极高的速度(数秒内即可送达全球任何指定收件人)与世界各地用户保持联系。

在各类项目开发中,邮件注册验证、用户反馈等场景十分常见。在 Node.js 环境中实现邮件收发功能相对便捷,得益于活跃的社区生态,开发者可以直接调用成熟的第三方库。其中,Nodemailer 包是快速实现邮件发送功能的理想选择。

准备工作

本教程以 QQ 邮箱为例,因其权限配置流程相对简单,便于演示。

环境配置与代码实现

安装依赖模块


cnpm i nodemailer -S

接下来,需要创建一个 SMTP 客户端的配置对象。


 //引入模块 nodemailer
 const nodemailer = require('nodemailer')

 // 创建一个SMTP客户端配置
 const config = {
  service: "QQ",
  auth: {
   // 发件人邮箱账号
   user: 'xxxxxx@qq.com',
   //发件人邮箱的授权码 这里可以通过qq邮箱获取 并且不唯一
   pass: 'xxxxxxxxxxx'
  }
 }

具体而言,需定义包含服务类型及认证信息的配置对象。


const transporter = nodemailer.createTransport(config)

随后,构建包含发件人、主题、收件人及正文内容的邮件对象。


 // 验证码随机数 
 let code = Math.random().toString().substr(2, 4)
 const mail = {
  // 发件人 邮箱 '昵称<发件人邮箱>'
  from: `"web"<xxxx@qq.com>`,
  // 主题
  subject: '激活验证码',
  // 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱
  to: '',
  //这里可以添加html标签
  html: `<b>您的激活验证码为:$[code], 请24小时内有效,请谨慎保管。</b>`
 }

最后,调用 transporter 对象的 sendMail 方法并传入邮件对象及回调函数,即可执行发送操作。


transporter.sendMail(mail, function(error, info) {
   if (error) {
    return console.log(error);
   }
   transporter.close()
   console.log('mail sent:', info.response)
  })

关于 QQ 邮箱权限的配置,需在邮箱设置中开启 SMTP 服务并获取授权码。

电子邮件与 Node.js 邮件发送概述 

完成上述配置后,即可顺利发送电子邮件。

电子邮件与 Node.js 邮件发送概述 

以下是完整的代码演示。


//引入模块 nodemailer
 const nodemailer = require('nodemailer')

 // 验证码随机书
 let code = Math.random().toString().substr(2, 4)

 // 创建一个SMTP客户端配置
 const config = {
  service: "QQ",
  auth: {
   // 发件人邮箱账号
   user: 'xxxxxxxxx@qq.com',
   //发件人邮箱的授权码 这里可以通过qq邮箱获取 并且不唯一
   pass: 'xxxxxxxxxxxxxxxxxxxxxx' //授权码生成之后,要等一会才能使用,否则验证的时候会报错,但是不要慌张哦
  }
 }


 //创建一个SMTP客户端配置对象
 const transporter = nodemailer.createTransport(config)

 //创建一个收件人对象
 const mail = {
  // 发件人 邮箱 '昵称<发件人邮箱>'
  from: `"web"<xxxxxxxxxx@qq.com>`,
  // 主题
  subject: '激活验证码',
  // 收件人 的邮箱 可以是其他邮箱 不一定是qq邮箱
  to: 'xxxxxxx@163.com',
  //这里可以添加html标签
  html: `<b>您的激活验证码为:$[code], 请24小时内有效,请谨慎保管。</b>`
 }

 // 发送邮件 调用transporter.sendMail(mail, callback)
 transporter.sendMail(mail, function(error, info) {
   if (error) {
    return console.log(error);
   }
   transporter.close()
   console.log('mail sent:', info.response)
  })

至此,关于 Node.js 使用 Nodemailer 发送邮件的实现方法介绍完毕。如需了解更多相关内容,建议查阅本站往期文章或继续浏览后续教程,感谢大家的支持。

作者最新文章