
本文介绍使用 node.js 的 nodemailer 库实现自动化测试报告(如 html、json 或截图)通过邮件自动发送给相关人员,支持 gmail、outlook 等主流 smtp 服务,并详细说明配置步骤、安全凭证设置及附件添加方法。
本文介绍使用 node.js 的 nodemailer 库实现自动化测试报告(如 html、json 或截图)通过邮件自动发送给相关人员,支持 gmail、outlook 等主流 smtp 服务,并详细说明配置步骤、安全凭证设置及附件添加方法。
在自动化测试项目(如基于 Selenium 的 Web UI 测试)中,生成测试报告后及时同步给团队成员或利益相关方,是持续集成与质量反馈的关键环节。Nodemailer 是目前最成熟、轻量且广泛使用的 Node.js 邮件发送库,原生支持附件、HTML 内容、多收件人、抄送等功能,完全满足测试报告(如 Allure、JUnit XML、自定义 HTML 报告)的自动化邮件分发需求。
✅ 快速开始:安装与基础配置
首先初始化项目并安装依赖:
npm init -y npm install nodemailer
✅ 安全配置 SMTP 凭据(以 Gmail 为例)
⚠️ 注意:切勿在代码中硬编码密码。Gmail 要求使用「应用专用密码(App Password)」或启用两步验证后的 OAuth2 token。推荐做法:
- 开启 Google 账户的「两步验证」;
- 进入 Google App Passwords 页面,生成一个 16 位应用专用密码;
- 将该密码用于 auth.pass 字段(而非账户登录密码)。
const nodemailer = require('nodemailer');
const fs = require('fs');
const transporter = nodemailer.createTransporter({
service: 'gmail', // 或显式配置:host: 'smtp.gmail.com', port: 465, secure: true
auth: {
user: 'your-email@gmail.com',
pass: 'your-app-specific-password' // ✅ 不是 Gmail 登录密码!
}
});✅ 发送带附件的测试报告(关键示例)
假设你的 Selenium 测试执行后生成了 report.html 和 screenshots.zip,可按如下方式附加多个文件:
const reportPath = './reports/report.html';
const zipPath = './reports/screenshots.zip';
transporter.sendMail({
from: '"Test Automation" <your-email@gmail.com>',
to: 'stakeholder@company.com, qa-team@company.com',
cc: 'manager@company.com',
subject: `【自动化测试报告】${new Date().toLocaleDateString()}`,
html: `<h2>✅ 自动化测试已完成</h2>
<p>执行环境:Chrome v124 | 总用例数:42 | 通过率:95.2%</p>
<p>详见附件报告。</p>`,
attachments: [
{ filename: 'test-report.html', path: reportPath },
{ filename: 'screenshots.zip', path: zipPath },
// ✅ 也可直接传 Buffer 或字符串内容(如 JSON 报告)
{
filename: 'summary.json',
content: JSON.stringify({ passed: 40, failed: 2, duration: '2m18s' }, null, 2)
}
]
})
.then(info => console.log('? 邮件已发送,Message ID:', info.messageId))
.catch(err => console.error('❌ 邮件发送失败:', err));? 其他安全与最佳实践建议
- 环境隔离:将邮箱配置存于 .env 文件(配合 dotenv 加载),避免提交到 Git;
- 错误重试机制:生产环境中建议封装 sendMail() 并加入指数退避重试逻辑;
- 大附件处理:单封邮件附件总大小建议 ≤25MB;超限时可改用云存储(如 AWS S3/Google Drive)生成临时下载链接嵌入邮件;
- 替代服务选项:若企业禁用 Gmail,Nodemailer 同样兼容 Outlook (service: 'hotmail')、腾讯企业邮、阿里云邮件推送等,仅需调整 host/port/auth 参数。
✅ 总结
Nodemailer 不仅解决了“发送带附件邮件”这一刚需,更因其稳定性和文档完善度,成为 CI/CD 流水线(如 GitHub Actions、Jenkins)中集成邮件通知的事实标准。结合 Selenium 测试脚本的 afterAll 或 onFinish 钩子调用,即可实现“测试结束 → 生成报告 → 自动归档 → 邮件通知”的闭环。记住:安全凭证管理比功能实现更重要——永远优先使用应用专用密码或 OAuth2,而非账户主密码。

















