nodemailer 的使用
NodeMailer
概念介绍
NodeMailer 是一个用于 Node.js 的邮件发送库, 通过连接 SMTP 协议,与指定的邮件服务商(QQ、163、Gmail 等)的 SMTP 服务器建立安全连接,并 代理 开发者完成邮件的提交与投递(先提交再投递)
1 | |
当执行:
1 | |
nodemailer 会:
- 建立 TCP 连接 到
smtp.qq.com:465 - 自动协商 SSL/TLS 加密通道(因为
secure: true) - 发送 SMTP 命令序列
EHLO→ 握手AUTH LOGIN→ 使用 Base64 编码发送user和passMAIL FROM:<from@example.com→ 声明发件人RCPT TO:<to@example.com>→ 声明收件人DATA→ 发送邮件头 + 正文QUIT→ 断开连接
- 将邮件提交给 QQ 邮箱的 SMTP 服务器
- 由 QQ 邮箱系统负责最终投递到目标邮箱(如 163、Gmail、Outlook 等)
nodemailer不直接投递到收件人邮箱,而是把邮件“交给”你配置的 SMTP 服务商(这里是 QQ),由它完成后续路由和投递。
一句话总结就是:
✅ **
nodemailer是一个 SMTP 客户端库,它封装了 SMTP 协议的底层通信细节,让你能用简单的 JavaScript 对象配置,即可通过任意支持 SMTP 的邮件服务商(如 QQ、163、SendGrid、Amazon SES 等)发送邮件。
Nodemailer 使用流程(5 步)
第 1 步:安装依赖
1 | |
⚠️ 注意:仅用于服务端(Node.js),不能在浏览器中使用(涉及 SMTP 密钥,且浏览器无 TCP 权限)。
第 2 步:创建传输器(Transporter)
配置 SMTP 服务器连接信息:
1 | |
🔐 授权码获取方式(以 QQ 邮箱为例):
- 登录 QQ 邮箱 → 设置 → 账户
- 开启 “POP3/SMTP 服务” → 按提示生成 16 位授权码
第 3 步:定义邮件内容(Mail Options)
1 | |
📌 关键规则:
from中的邮箱地址 必须与auth.user一致,否则会被 SMTP 服务器拒绝。- 可同时提供
text和html,客户端会优先显示html。
第 4 步:发送邮件(异步)
1 | |
💡 返回的
info包含邮件 ID、响应状态等,可用于日志或追踪。
第 5 步(可选):验证 SMTP 配置是否有效
1 | |
nodemailer 的使用
https://dxblacksmith.github.io/2026/01/31/nodemailer/