我正在构建一个系统,用于自动解析传入的电子邮件并从中填充数据库
最初只会有10-20种预期格式,但长期存在数千种不同格式的可能性
我看待它的方式
我所追求的是如何构建这个的建议,例如我将格式存储在数据库或平面文件中,系统需要灵活,可能是主题行检测不够而且我可能也有扫描电子邮件标题。
数据本身可以在电子邮件正文或附件中,例如pdf,excel文件等
这类事情的一个主要例子是picasa照片库,您可以将照片通过电子邮件发送到特定的电子邮件地址,并自动提取并将其放入图库
答案 0 :(得分:2)
可能不是最着名的答案,但你看看标准的方法,比如procmail吗?为您提供对电子邮件的基本了解,并允许您围绕所有内容构建过滤器。 (首先通过文件类型检测器处理邮件,将regexp应用于所有可能的标头,...)
通过这种方式,您可以将系统的每个部分保存在专门的脚本/程序中,并生成可轻松扩展的模块化解决方案。另外,您可以使用任何已经由其他人编程的工具。
对于文件类型过滤器:我正在通过procmail为破损/旧pgp邮件做类似的事情来添加内容类型。
# repair pgp-encoded messages with missing Content-Type
######################################################################
:0
* !^Content-Type: message/
* !^Content-Type: multipart/
* !^Content-Type: application/pgp
{
:0 fBw
* ^-----BEGIN PGP MESSAGE-----
* ^-----END PGP MESSAGE-----
| /usr/bin/formail \
-i "Content-Type: application/pgp; format=text; x-action=encrypt"
:0 fBw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* ^-----BEGIN PGP SIGNATURE-----
* ^-----END PGP SIGNATURE-----
| /usr/bin/formail \
-i "Content-Type: application/pgp; format=text; x-action=sign"
}
然后,进一步处理可以匹配内容类型,并为特殊类型(以及未知类型的通用处理程序)分配特殊处理程序。
答案 1 :(得分:0)
您可能要做的是首先解析标题和主题行,然后通过数据库导入正确的格式。因为可能存在数千种格式,所以数据库将是最简单的方式,因为它是动态的。无需创建数千个文件。
答案 2 :(得分:0)
使用PHPMailer库。