# Software_Experiment **Repository Path**: autumn-ux/master ## Basic Information - **Project Name**: Software_Experiment - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-22 - **Last Updated**: 2026-01-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mail Parser 2025 一个基于 Node.js 的 EML 邮件解析工具,使用 DeepSeek API 进行智能邮件分析。 ## 功能特性 - 解析 EML 邮件文件 - 提取邮件主题和正文 - 自动下载邮件附件到指定目录 - 使用 DeepSeek API 生成邮件正文简报 - 使用 DeepSeek API 分析附件内容并生成描述 - 支持单个和批量解析 ## 项目结构 ### 核心代码 项目包含三个核心类: 1. **EmailParser** - 邮件解析类 - 打开并读取 EML 文件 - 解析邮件主题和正文 - 解析并下载附件到 `attachment` 目录 2. **DeepSeekAnalyzer** - DeepSeek 分析类 - 分析邮件正文并生成简报 - 分析附件内容并生成每个附件的描述 3. **MailParser** - 组合类(主类) - 整合 EmailParser 和 DeepSeekAnalyzer - 提供完整的邮件解析和分析功能 ### 学习资源 项目包含完整的学习资源,适合有 C 语言和数据结构基础的同学学习 JavaScript ES6 和 Node.js: #### 📚 ES6 技术要点学习 (`es6-examples/`) 包含 11 个 ES6 技术要点的详细讲解、练习题和答案: 1. **对象、数组和函数** - JavaScript 基础数据类型和结构 2. **模块化系统** - `import`/`export` 的使用 3. **类和面向对象** - `class` 和面向对象编程 4. **默认参数** - 函数默认参数 5. **箭头函数** - 箭头函数语法 6. **模板字符串** - 模板字符串和字符串插值 7. **解构赋值** - 数组和对象解构 8. **扩展运算符** - 展开运算符的使用 9. **可选链操作符** - 安全访问嵌套属性 10. **异步编程** - `async/await` 异步编程 11. **Promise 和异步处理** - Promise 和异步处理 每个技术要点包含: - **讲解文档** (`XX-讲解.md`) - 详细的示例代码和说明 - **练习题** (`XX-练习题.md`) - 操作练习题 - **答案** (`answers/XX-答案.md`) - 完整答案和可执行代码 - **示例代码** (`examples/[模块]/`) - 按模块分类的示例代码 #### 📚 Node.js 模块学习 (`nodejs-example/`) 包含 6 个常用 Node.js 模块的详细讲解、练习题和答案: 1. **fs 模块** - 文件系统操作 2. **path 模块** - 路径处理 3. **url 模块** - URL 和文件路径转换 4. **mailparser 模块** - EML 邮件解析 5. **openai 模块** - OpenAI SDK(用于调用 DeepSeek API) 6. **pdf-parse 模块** - PDF 文件解析 每个模块包含: - **讲解文档** (`XX-模块-讲解.md`) - 详细的示例代码和说明 - **练习题** (`XX-模块-练习题.md`) - 操作练习题 - **答案** (`answer/[模块]/XX-模块-答案.md`) - 完整答案和可执行代码 - **示例代码** (`examples/[模块]/`) - 按模块分类的示例代码 #### 📖 学习指南 - **[`ES6学习指南.md`](./ES6学习指南.md)** - 完整的学习指南,包含: - C 语言与 JavaScript 对比 - 详细的技术解析 - 分阶段学习路径 - 实践建议和常见问题 **👉 推荐首先阅读此文件,了解整体学习框架** **推荐学习顺序**: 1. 阅读 `ES6学习指南.md` 了解整体框架 2. 按照 `es6-examples/` 中的顺序学习 ES6 技术要点 3. 学习 `nodejs-example/` 中的 Node.js 模块 4. 阅读和理解项目核心代码 ## 安装 ```bash npm install ``` ## 配置 在使用前,你需要获取 DeepSeek API 密钥。将密钥配置到环境变量或代码中。 ## 使用方法 ### 基本使用(使用组合类) ```javascript import MailParser from './MailParser.js'; // 初始化解析器 const parser = new MailParser('your-deepseek-api-key'); // 解析EML文件 const result = await parser.parse('path/to/email.eml'); console.log('发件人:', result.email.from); console.log('发送时间:', result.email.date); console.log('主题:', result.email.subject); console.log('邮件简报:', result.email.summary); // 附件分析 if (result.attachments && result.attachments.length > 0) { result.attachments.forEach((att, index) => { console.log(`附件 ${index + 1}: ${att.originalName}`); console.log(`描述: ${att.description}`); }); } ``` ### 单独使用 EmailParser ```javascript import EmailParser from './EmailParser.js'; const emailParser = new EmailParser('attachment'); // 附件保存目录 // 解析邮件(包括下载附件) const emailData = await emailParser.parse('path/to/email.eml'); console.log('主题:', emailData.subject); console.log('正文:', emailData.text); console.log('附件:', emailData.downloadedAttachments); ``` ### 单独使用 DeepSeekAnalyzer ```javascript import DeepSeekAnalyzer from './DeepSeekAnalyzer.js'; const analyzer = new DeepSeekAnalyzer('your-deepseek-api-key'); // 分析邮件正文 const emailSummary = await analyzer.analyzeEmailBody(emailData); // 分析附件 const attachmentAnalyses = await analyzer.analyzeAttachments( emailData.downloadedAttachments ); ``` ### 批量解析 ```javascript const emlFiles = ['email1.eml', 'email2.eml', 'email3.eml']; const results = await parser.parseBatch(emlFiles); ``` ## API 文档 ### MailParser 类 #### 构造函数 ```javascript new MailParser(apiKey, baseURL?, attachmentDir?) ``` - `apiKey` (string, 必需): DeepSeek API 密钥 - `baseURL` (string, 可选): API 基础URL,默认为 `https://api.deepseek.com` - `attachmentDir` (string, 可选): 附件保存目录,默认为 `attachment` #### 方法 ##### parse(emlFilePath, emailId?) 解析单个 EML 文件并返回完整的分析结果。 - `emlFilePath` (string): EML 文件路径 - `emailId` (string, 可选): 邮件标识符,用于附件目录命名 - 返回: `Promise` 包含 `email`, `attachments`, `parsedEmail`, `attachmentDir` ##### parseBatch(emlFilePaths) 批量解析多个 EML 文件。 - `emlFilePaths` (string[]): EML 文件路径数组 - 返回: `Promise` 结果数组 ### EmailParser 类 #### 构造函数 ```javascript new EmailParser(attachmentDir?) ``` - `attachmentDir` (string, 可选): 附件保存目录,默认为 `attachment` #### 主要方法 - `readEMLFile(emlFilePath)` - 读取 EML 文件 - `parseEmail(emlContent)` - 解析邮件内容 - `downloadAttachments(attachments, emailId)` - 下载附件 - `parse(emlFilePath, emailId?)` - 完整解析流程 ### DeepSeekAnalyzer 类 #### 构造函数 ```javascript new DeepSeekAnalyzer(apiKey, baseURL?) ``` - `apiKey` (string, 必需): DeepSeek API 密钥 - `baseURL` (string, 可选): API 基础URL,默认为 `https://api.deepseek.com` #### 主要方法 - `analyzeEmailBody(emailData)` - 分析邮件正文并生成简报 - `analyzeAttachment(attachmentInfo)` - 分析单个附件 - `analyzeAttachments(attachments)` - 分析所有附件 - `analyze(emailData)` - 完整分析流程(邮件+附件) ## 依赖 - `mailparser`: 用于解析 EML 文件 - `openai`: 用于调用 DeepSeek API(兼容 OpenAI SDK) - `pdf-parse`: 用于解析 PDF 文件(可选) ## 学习资源使用 ### 快速开始学习 1. **阅读学习指南**: - 打开 [`ES6学习指南.md`](./ES6学习指南.md) 文件 - 了解整体学习框架和 C 语言对比 - 查看分阶段学习路径 2. **学习 ES6 技术要点**: ```bash # 查看讲解文档 cat es6-examples/01-对象、数组和函数-讲解.md # 完成练习题 cat es6-examples/01-对象、数组和函数-练习题.md # 查看答案 cat es6-examples/answers/obj/01-对象、数组和函数-答案.md # 运行示例代码 cd es6-examples/examples/obj/OBJ01 node OBJ01.js ``` 3. **学习 Node.js 模块**: ```bash # 查看讲解文档 cat nodejs-example/01-fs模块-讲解.md # 完成练习题 cat nodejs-example/01-fs模块-练习题.md # 查看答案 cat nodejs-example/answer/fs/01-fs模块-答案.md # 运行示例代码 cd nodejs-example/examples/fs/FS01 node FS01.js ``` ### 学习建议 1. **按顺序学习**:建议按照文件编号顺序学习,后面的内容可能依赖前面的知识 2. **三步学习法**: - 先看讲解文档,理解概念和示例 - 完成练习题,加深理解 - 查看答案,学习最佳实践 3. **动手实践**: - 运行示例代码,看到实际输出 - 修改代码,观察变化 - 完成练习题后再看答案 ## 许可证 MIT