将本地 .eml 邮件文件解析导入 SQLite 数据库,支持全文检索、分类过滤、日期筛选。
| 依赖 | 用途 | 安装方式 |
|---|---|---|
| ------ | ------ | --------- |
| Python 3.8+ | 运行环境 | 系统自带 |
| sqlite3 | 数据库 | Python 内置 |
| 解析 .eml | Python 内置 |
无需 pip 安装任何包。
脚本仅使用 Python 标准库和 os.path 跨平台接口,无 Windows/macOS/Linux 专属代码或硬编码路径分隔符。以下系统均可正常运行:
首次导入:
"导入邮件"
"解析 /path/to/mails 下的 .eml 文件"
"初始化邮件数据库"
"导入邮件并自动按分类整理"
搜索邮件:
"找一下 2022 年项目验收的邮件"
"搜索合同相关的邮件"
"去年的通知公告有哪些"
"周报在哪里"
# 导入邮件
python scripts/eml_import.py /path/to/eml --db /path/to/emails.db
# 导入 + 自动按分类整理(一步完成)
python scripts/eml_import.py /path/to/eml --db /path/to/emails.db --auto-organize
# 应用分类
python scripts/eml_classify.py /path/to/emails.db --mode generic
# 搜索
python scripts/eml_search.py "合同审批"
# 带过滤搜索
python scripts/eml_search.py "会议" --category NOTICE --date-from 2023-01-01
# 查看统计
python scripts/eml_search.py --stats
使用 --auto-organize 参数,导入邮件时自动按分类创建子目录并移动文件:
# 导入并自动整理(推荐)
python scripts/eml_import.py /path/to/eml --db emails.db --auto-organize
# 导入 + 自定义分类整理
python scripts/eml_import.py /path/to/eml --db emails.db --auto-organize --mode custom
效果:
/path/to/eml/
├── RPT_WEEK/
│ ├── 2022-01-01_weekly_report.eml
│ └── ...
├── RPT_MONTH/
├── NOTICE/
├── REPLY/
├── FORWARD/
├── RECALL/
├── OTHER/
└── emails.db
_1、_2 后缀| 分类 | 说明 | 匹配规则 |
|---|---|---|
| ------ | ------ | ---------- |
| RPT_WEEK | 周报 | 主题含"周报"/"周总结"/"weekly report" |
| RPT_MONTH | 月报 | 主题含"月报"/"月总结"/"monthly report" |
| NOTICE | 通知公告 | 主题含"通知"/"公告"/"通告"/"notice" |
| REPLY | 回复邮件 | 主题以"Re:"或"回复:"开头 |
| FORWARD | 转发邮件 | 主题以"Fw:"或"转发:"开头 |
| RECALL | 已撤回 | 正文含撤回提示 |
| OTHER | 其他 | 以上均不匹配 |
优先级:邮件类型 > 主题匹配 > 关键词匹配
提供 JSON 文件定义分类规则。键为分类名称,值为关键词列表,邮件主题或正文匹配任一关键词即归入该分类。按 JSON 键顺序匹配,先匹配先生效,未匹配归入"其他"。
{
"人事行政": ["人事", "行政", "考勤", "入职", "离职"],
"财务报销": ["报销", "发票", "预算", "付款"]
}
# 生成模板
python scripts/eml_classify.py --template > my_rules.json
# 应用自定义规则
python scripts/eml_classify.py /path/to/emails.db --mode custom --rules my_rules.json
让 AI 分析邮件内容,自动生成贴合业务的分类规则。无需手动编写关键词。
直接告诉 AI:
"帮我分析邮件,自动生成分类规则"
"AI 自动分类这些邮件"
执行流程:
```json
{
"人事行政": ["入职", "离职", "考勤", "社保", "年假"],
"财务报销": ["报销", "发票", "预算", "付款", "审批"],
"项目进展": ["里程碑", "排期", "验收", "交付", "复盘"],
"客户沟通": ["客户", "需求", "反馈", "投诉", "报价"],
"会议纪要": ["会议", "纪要", "决议", "待办", "参会"]
}
```
eml_classify.py --mode custom --rules rules.json 应用适用场景:邮件量大、业务领域不熟悉、不知道怎么分类时。
分类结果存储在 emails 表的 category 字段:
-- 按分类统计
SELECT category, COUNT(*) FROM emails GROUP BY category;
-- 查看某分类的邮件
SELECT subject, from_email, date FROM emails WHERE category = 'RPT_WEEK';
| 技巧 | 示例 |
|---|---|
| ------ | ------ |
| 关键词 | 合同 报销 |
| 短语 | "会议通知" "项目验收" |
| 分类过滤 | --category RPT_WEEK |
| 日期范围 | --date-from 2022-01-01 --date-to 2022-12-31 |
| 发件人 | --from zhangsan |
导入失败
parse_error 字段了解具体错误搜索无结果
中文乱码
增量导入不生效
共 2 个版本