邮件转 PDF 与 Markdown
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_1aeb512d/eml-to-md。
技能介绍
要解决的问题
Foxmail、QQ 邮箱、Gmail、Outlook 导出的 .eml 文件散落在磁盘上,除了邮件客户端,几乎没有任何工具能顺手处理它们:想归档成可检索的知识库,要么逐封手工复制,要么面对一堆编码混乱的原始 MIME。更麻烦的是,邮件正文里往往带着客户手机号、身份证号、银行卡号,直接转成文档就意味着敏感信息被原样写进新的文件。
@user_1aeb512d/eml-to-md 解决的就是这件事:把文件夹里的 .eml 批量转换成可检索的本地文档,转换过程中按规则自动脱敏。
核心能力与工作流程
- 批量转换,格式可选:默认输出 PDF(内联图片以 base64 直接嵌入,不存在图片打不开的问题),传入
--format md时输出 Markdown(图片用相对链接引用)。 - 输入约定简单:脚本只认标准
.eml,邮件挑选由用户自己在邮箱客户端里完成;输入文件夹由用户指定,没指定就主动询问。 - 脱敏分级:通过
--mask控制范围,默认all(手机号 + 身份证 + 银行卡 + 客户名复查)。手机号打码为138****5678,身份证为110101*********7891X,银行卡走 13~19 位 + Luhn 校验后替换为[CARD]。 - 客户名走人工复查通道:正则抓取“尊敬的X先生”这类上下文中的疑似姓名,标记
⚠待审:姓名写入review_list.md,不打码;确认为真实客户名后维护进config/names.txt,下次自动替换为[NAME]。 - 编码容错:正文按邮件声明的 charset 解码,兜底链为
gb18030/gbk/utf-8/latin-1,避免国内常见的 GBK 邮件乱码。 - 幂等与附件处理:转换完成后原
.eml重命名为.eml.done,重复运行不会二次转换;内联图片按模式分别处理(PDF 内嵌,MD 落盘到attachments/并写相对链接),普通附件存盘并在文档末尾生成附件清单。
适用边界与注意点
- MD 模式的图片依赖查看器:相对路径在 Obsidian 中通常有效,但在其他预览器或网页中经常解析不到;对图片完整性有强需求的,建议用默认的 PDF 模式。
- MD 转换的排版短板:
html2text处理富文本 HTML 时容易产生格式混乱,复杂排版邮件的 MD 产物可读性有限。 - Git Bash / MSYS 路径坑:跨盘时
/c/...会被误解析,脚本与 Python 路径需用显式C:/盘符;中文目录名经 argv 传给 Python 会乱码,需要先cd进目录再用相对路径。 - PDF 模式依赖系统浏览器:底层调用 Edge 或 Chrome 的无头模式生成 PDF,二者都没有时需要通过
--pdf-engine指定 exe 路径。 - 上传 ima 知识库是可选后置步骤:仅当用户明确要求时才执行,且要先探测 ima 连接器是否具备上传能力;若当前只支持检索,如实告知用户手动导入即可。
使用场景
- 把Foxmail导出的数百封客户邮件批量转成PDF存档,手机号与身份证自动打码
- 把整个文件夹的.eml转成Markdown放进Obsidian,用于全文检索和图谱浏览
- 归档前按规则只脱敏手机号和银行卡,保留客户姓名原文不做处理
- 把QQ邮箱导出的GBK编码邮件批量转成PDF,避免正文乱码
适合人员
- 律师助理:需要把往来邮件批量存档为PDF,且不能泄露当事人手机号和身份证号
- 知识库编辑:想把历史邮件转成Markdown纳入Obsidian做全文检索
- 合规专员:批量处理含客户个人信息的邮件前,需要按类别执行脱敏并留复查清单
- 档案管理员:把邮箱导出的.eml批量转成独立可打印的PDF归档