#提取 #文件 #文件路径 #解析器 #命令行工具 #文本文件

app 电子邮件地址提取器

一个使用纯Rust编写的闪电般的命令行工具,可以从指定路径中的文件中自动提取电子邮件地址。

2个稳定版本

1.0.1 2024年6月9日
1.0.0 2024年6月7日

#315 in 电子邮件

Download history 287/week @ 2024-06-05 25/week @ 2024-06-12

53 每月下载量

MIT 许可证

200KB
185

电子邮件地址提取器

一个使用纯Rust编写的闪电般的命令行工具,可以从指定路径中的文件中自动提取电子邮件地址。

支持的文件类型

  • 纯文本(txt、csv、sql、json、html、xml等)
  • 便携式文档格式(pdf)
  • 微软Word(docx)
  • 微软Excel(xlsx)
  • 微软PowerPoint(pptx)
  • OpenOffice Writer(odt)
  • OpenOffice电子表格(ods)
  • OpenDocument演示文稿(odp)

用法

  cargo run --release /path/to/file

该工具将提取的电子邮件地址写入当前目录中名为emails.txt的纯文本文件。

示例

使用由Have I Been Pwned提供的示例文件,该文件包含1000万条典型的泄露数据记录,我们确认此工具成功提取了1000万个电子邮件地址。

\sample文件夹中,提供了多个示例文件,以展示该工具从各种文件格式中提取电子邮件地址的能力。

这些示例文件包括

  • file.html
  • file.json
  • file.odp
  • file.ods
  • file.odt
  • file.pdf
  • file.pptx
  • file.sql
  • file.txt
  • file.xlsx
  • file.xml

背景

本项目受到Have I Been Pwned的启发,旨在帮助从数据泄露中提取电子邮件地址,这些数据通常以csv或sql等纯文本文件格式存在。通过使用HashSet,我们确保输出没有重复。

目前,在纯Rust中处理多种文件类型还没有一种完美的解决方案。在这里,我们使用魔数来识别文件的MIME类型,然后根据该知识尝试提取文本内容。并非所有文件类型都使用相同的编码,并且一些文件格式实际上是包含多个不同文件类型的zip存档,例如xml。

要从文本中提取电子邮件地址,我们使用众所周知的正则表达式 \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b,它可以很好地匹配 任何 电子邮件地址。制定一个 完美 的正则表达式来验证电子邮件地址实际上并不简单。关于这个主题的 讨论正则表达式解决方案 都是具有争议性的。真正验证电子邮件地址的唯一方法是将电子邮件发送到该地址,这显然不是我们要做的事情。

路线图

  • 同时从多个文件中提取电子邮件地址

依赖项

~26MB
~428K SLoC