# EBAT **Repository Path**: renneseme/ebat ## Basic Information - **Project Name**: EBAT - **Description**: 一个邮件批量发送工具 - **Primary Language**: Rust - **License**: AGPL-3.0 - **Default Branch**: tauri - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 1 - **Created**: 2024-07-30 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: Rust, TypeScript, Vue ## README # EBAT 邮件批量发送工具 [![Tauri](https://img.shields.io/badge/Tauri-2.0-ffc131?logo=tauri)](https://tauri.app) [![Vue](https://img.shields.io/badge/Vue-3.0-4FC08D?logo=vue.js)](https://vuejs.org) [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-3178C6?logo=typescript)](https://www.typescriptlang.org) [![License](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE) 一个基于Tauri框架开发的跨平台邮件批量发送工具,支持Excel文件导入,实现高效的批量邮件发送。 ## 📖 项目来源 本项目是在近期Trae Solo上线后,尝试将原项目进行重构的成果,之前了解过Tauri框架,打包体积小,Electron框架打包出来的应用体积较大,而且本项目功能相对简单,使用Electron打包完成后得到100M+大小,个人感觉没有必要,所以尝试Tauri框架并重构。原项目是为了解决女朋友工作中每月需要批量发送数百封带附件邮件的痛点而开发的。在没有Rust语言基础的情况下,借助Trae Solo的强大功能,仅耗费2天时间就完成了从Electron+Java架构到Tauri+Rust架构的重构。 原项目说明可查看:[原项目说明.md](https://gitee.com/renneseme/ebat/blob/master/README.md) 特别感谢Trae团队提供的强大工具和支持,使这一跨语言、跨框架的重构成为可能! ## 🖼️ 应用截图 ### 首页 ![首页](doc/首页.png) ### 邮箱配置 ![邮箱配置](doc/邮箱配置.png) ### 导入邮件 ![导入邮件](doc/导入邮件.png) ### 发送队列 ![发送队列](doc/发送队列.png) ### 历史明细 ![历史明细](doc/历史明细.png) ### 设置 ![设置](doc/设置.png) ### 关于 ![关于](doc/关于.png) ## ✨ 主要特性 - 🎯 **批量邮件发送** - 支持Excel文件导入,一次性发送大量邮件 - 🔒 **数据安全** - 本地SQLite数据库,密码加密存储 - 📊 **队列管理** - 队列机制,实时进度跟踪 - 📈 **历史记录** - 完整的发送历史和状态追踪 - 🎨 **现代UI** - 基于Vue 3和Element Plus的直观界面 - 🔧 **跨平台** - 支持Windows、macOS、Linux ## 🚀 快速开始 ### 环境要求 - Node.js 16+ - Rust 1.70+ - Windows 10+/macOS 10.15+/Ubuntu 20.04+ ### 安装步骤 ```bash # 1. 克隆项目 git clone cd ebat # 2. 安装前端依赖 npm install # 3. 安装Rust依赖 cd src-tauri cargo build cd .. # 4. 启动开发服务器 npm run tauri dev ``` ### 构建应用 ```bash # 开发模式 npm run tauri dev # 生产构建 npm run tauri build # 仅构建前端 npm run build ``` ## 📖 使用指南 ### 1. 首次使用 1. 启动应用程序 2. 配置SMTP服务器信息 3. 下载Excel模板 ### 2. 发送邮件流程 ```mermaid graph LR A[准备Excel文件] --> B[启动软件] B --> C[配置SMTP] C --> D[导入Excel] D --> E[确认发送] E --> F[开始发送] F --> G[监控进度] ``` ### 3. Excel模板格式 | 收件人邮箱 | 抄送邮箱 | 邮件主题 | 邮件内容 | 附件路径 | |------------|----------|----------|----------|----------| | user1@example.com | cc@example.com | 标题1 | 内容1 | file1.pdf | | user2@example.com | | 标题2 | 内容2 | | ## 🏗️ 重构亮点 ### 技术架构对比 | 特性 | 原项目 | 重构后 | |------|--------|--------| | 框架 | Electron + Java | Tauri + Rust | | 包体积 | 较大(包含JRE和Electron运行时) | 极小(原生系统调用,无冗余运行时) | | 性能 | 中等 | 优秀(Rust原生性能) | | 启动速度 | 较慢 | 极快 | | 内存占用 | 较高 | 较低 | | 开发语言 | JavaScript + Java | TypeScript + Rust | ### 重构优势 - **极致轻量化**:包体积大幅减小,启动速度提升数倍 - **性能提升**:Rust的原生性能优势带来更流畅的用户体验 - **安全性增强**:Rust的内存安全特性减少潜在漏洞 - **开发效率**:借助Trae Solo实现跨语言快速开发 - **跨平台支持**:保持对Windows、macOS、Linux的良好支持 ## 🏗️ 项目架构 ### 前端技术栈 - **Vue 3** - 组合式API的现代前端框架 - **TypeScript** - 类型安全的开发体验 - **Element Plus** - Vue 3 UI组件库 - **Pinia** - 状态管理 - **Vite** - 构建工具 ### 后端技术栈 - **Tauri 2.0** - 桌面应用框架 - **Rust** - 系统编程语言 - **SQLite** - 嵌入式数据库 - **Lettre** - 邮件发送库 - **Argon2** - 密码哈希 ### 项目结构 ``` ebat/ ├── src/ # 前端源码 │ ├── pages/ # 页面组件 │ ├── router/ # 路由配置 │ ├── stores/ # 状态管理 │ ├── services/ # 数据服务 │ └── utils/ # 工具函数 ├── src-tauri/ # 后端源码 │ ├── src/ # Rust源码 │ ├── capabilities/ # 权限配置 │ └── icons/ # 应用图标 ├── package.json # 前端依赖 └── Cargo.toml # Rust依赖 ``` ## 🗄️ 数据库设计 ### 主要数据表 - **app_settings** - 应用设置和SMTP配置 - **security** - 用户密码和安全信息 - **mail_batch** - 邮件发送批次 - **mail_job** - 具体邮件任务 - **mail_attachment** - 邮件附件 ## 📱 页面功能 | 页面 | 功能描述 | |------|----------| | 登录页面 | 用户认证和登录 | | 仪表盘 | 系统概览和统计 | | 邮箱配置 | SMTP服务器设置 | | 邮件导入 | Excel文件上传和解析 | | 发送队列 | 队列管理和进度监控 | | 发送历史 | 历史记录查看 | | 系统设置 | 应用配置管理 | ## 🔒 安全特性 - **本地存储** - 所有数据存储在本地,不上传服务器 - **密码加密** - 使用Argon2算法加密用户密码 - **凭据保护** - SMTP凭据加密存储 - **隐私保护** - 邮件内容本地处理 ## 🛠️ 开发指南 ### 开发命令 ```bash # 启动开发服务器 npm run tauri dev # 构建生产版本 npm run tauri build # 代码检查 npm run lint # 类型检查 npm run type-check ``` ### 添加新功能 1. 在 `src-tauri/src/` 添加Rust后端逻辑 2. 在 `src/pages/` 创建Vue组件 3. 在 `src-tauri/tauri.conf.json` 配置权限 4. 在 `src/services/` 添加数据服务 ## 📈 开发计划 ### 已完成 ✅ - [x] 软件保护功能 - [x] SMTP配置管理 - [x] Excel导入功能 - [x] 基础批量发送 - [x] 队列管理系统 - [x] 历史记录功能 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 开启 Pull Request ## 📄 许可证 本项目采用 AGPL-3.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 📞 联系方式 - 项目作者:Renne - 邮箱:rennex@qq.com - 项目主页:[https://gitee.com/renneseme/ebat] ## 🙏 致谢 感谢以下开源项目: - [Tauri](https://tauri.app) - 跨平台应用开发框架 - [Vue.js](https://vuejs.org) - 前端框架 - [Element Plus](https://element-plus.org) - UI组件库 - [Lettre](https://lettre.rs) - Rust邮件库 --- ⭐ 如果这个项目对您有帮助,请给个Star!