基于 Express + Vue 3 的批量邮件发送系统,支持通过 SMTP 协议批量发送邮件,并提供 Excel 模板导入收件人、富文本编辑邮件内容等功能。
emailServes/
├── backfront/ # 后端服务 (Express.js)
│ ├── app.js # 服务入口,端口 4443
│ ├── router/ # 路由模块
│ │ ├── verifyLogin.js # 登录验证接口 /api/login/verify
│ │ ├── emailServer.js # 邮件发送接口 /api/email/sendemail
│ │ ├── uploads.js # 文件上传接口 /api/uploads
│ │ └── templateDownload.js # 模板下载接口 /api/template/xlsx
│ ├── handle/ # 业务逻辑
│ │ ├── email.js # 邮件发送核心逻辑(队列机制)
│ │ ├── nodemailerHandle.js # SMTP 服务器配置与邮件发送
│ │ └── errorHandle.js # 统一响应处理
│ ├── public/template/ # Excel 模板文件
│ └── .env # 环境变量配置
│
└── WebTools/ # 前端应用 (Vue 3 + Vite)
├── src/
│ ├── views/ # 页面视图
│ │ ├── login/ # 登录页面
│ │ └── MainPage.vue # 主页面(邮件编辑与发送)
│ ├── components/ # 组件
│ │ ├── Tiptap.vue # 富文本编辑器组件
│ │ └── IntroDialog.vue # 引导弹窗
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态管理
│ ├── styles/ # 样式文件
│ └── utils/ # 工具函数(Axios 封装)
└── vite.config.js # Vite 配置
- SMTP 账号验证:支持QQ SMTP 登录验证
- 批量邮件发送:通过队列机制管理发送请求,避免并发冲突
- Excel 导入收件人:上传 Excel 文件一键导入收件人列表,支持模板下载
- 富文本编辑:集成 Tiptap 富文本编辑器,支持文字排版、图片、链接等
- 附件上传:支持上传文件作为邮件附件(阿里云 OSS 存储)
- Node.js >= 18
- pnpm(推荐使用 pnpm 作为包管理器)
git clone <仓库地址>
cd emailServescd backfront
# 安装依赖
pnpm install
# 配置环境变量(编辑 .env 文件,填写阿里云 OSS 配置)
# 如果不需要文件上传功能,可以跳过 OSS 配置
# 启动服务(默认端口 4443)
node app.jscd WebTools
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev前端开发服务器默认运行在 http://localhost:5173,会自动代理 API 请求到后端 http://localhost:4443。
- 登录:打开应用,输入邮箱地址和 SMTP 授权码(非邮箱密码,需要在邮箱设置中生成)
- 导入收件人:点击"下载模板"获取 Excel 模板,按格式填写收件人信息后上传
- 编辑邮件:在富文本编辑器中编写邮件主题和正文内容
- 发送邮件:点击发送按钮,系统将按队列依次发送邮件
下载的模板包含以下列:
| 邮箱地址 |
|---|
| example@qq.com |
- QQ 邮箱:设置 → 账户 → POP3/SMTP 服务 → 生成授权码
后端 .env 文件配置项说明:
| 变量名 | 说明 |
|---|---|
ALIYUN_REGION |
阿里云 OSS 地域节点 |
ALIYUN_ACCESS_KEY_ID |
阿里云 AccessKey ID |
ALIYUN_ACCESS_KEY_SECRET |
阿里云 AccessKey Secret |
ALIYUN_BUCKET |
阿里云 OSS Bucket 名称 |
OSS_BASE_URL |
OSS 访问基础 URL |
注意:如果不需要文件上传功能,可以不配置 OSS 相关变量。
- Express.js - Web 服务框架
- nodemailer - SMTP 邮件发送
- multer - 文件上传处理
- ali-oss - 阿里云 OSS 对象存储
- xlsx - Excel 文件处理
- cors - 跨域处理
- Vue 3 - 前端框架(组合式 API)
- Vite - 构建工具
- Element Plus - UI 组件库
- Pinia - 状态管理
- Tiptap - 富文本编辑器
- xlsx - Excel 文件读取
- Axios - HTTP 请求
- 登录失败提示"请检查账号密码是否正确":请确认使用的是 SMTP 授权码而非邮箱密码
- 邮件发送失败:检查 SMTP 服务是否已开启,部分邮箱需要手动开启 SMTP 功能
- 模板下载后打不开:确保后端服务正常运行,且
public/template/template.xlsx文件存在