我有一个包含“纯文本 MIME 消息格式”的电子邮件的文件。我不确定这是否是 EML 格式。该电子邮件包含一个附件,我想提取附件并再次创建这些文件。这就是附件部分的样子——
...
...
Receive, deliver details
...
...
From: sac ascsac <sacsac@sacascsac.ascsac>
Date: Thu, 20 Jan 2011 18:05:16 +0530
Message-ID: <AANLkTimmSL0iGW4rA3tvSJ9M3eT5yZLTGsqvCvf2fFC3@mail.gmail.com>
Subject: Test attachments
To: ascsacsa@ascsac.com
Content-Type: multipart/mixed; boundary=20cf3054ac85d97721049a465e12
--20cf3054ac85d97721049a465e12
Content-Type: multipart/alternative; boundary=20cf3054ac85d97717049a465e10
--20cf3054ac85d97717049a465e10
Content-Type: text/plain; charset=ISO-8859-1
hello this is a test mail. It contains two attachments
--20cf3054ac85d97717049a465e10
Content-Type: text/html; charset=ISO-8859-1
hello this is a test mail. It contains two attachments<br>
--20cf3054ac85d97717049a465e10--
--20cf3054ac85d97721049a465e12
Content-Type: text/plain; charset=US-ASCII; name="simple_test.txt"
Content-Disposition: attachment; filename="simple_test.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gj5n2yx60
aGVsbG8gd29ybGQKYWMgYXNj
...
encoded things here
...
ZyBmZyAKCjIKNDIzCnQ2Mwo=
--20cf3054ac85d97721049a465e12
Content-Type: application/x-httpd-php; name="oscomm_backup_code.php"
Content-Disposition: attachment; filename="oscomm_backup_code.php"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gj5n5gxn1
PD9waHAKCg ...
...
encoded things here
...
X2xpbmsoRklMRU5BTUVfQkFDS1VQKSk7Cgo/Pgo=
--20cf3054ac85d97721049a465e12--
X-Attachment-Id: f_gj5n2yx60
我可以看到和 之间的部分ZyBmZyAKCjIKNDIzCnQ2Mwo=
,包括第一个附件的内容。我想解析这些附件(文件名和内容并创建这些文件)。
在使用PHP 类中可用的DBX Parser类解析 dbx 格式文件后,我得到了这个文件。
我在很多地方进行了搜索,除了Script to parse emails for attachments之外,在 SO 中没有找到太多关于此的讨论。可能是我在搜索时错过了一些术语。在那个答案中提到了-
您可以使用边界来提取 base64 编码信息
但我不确定哪些是边界以及如何准确使用边界?必须已经有一些库或一些明确定义的方法来执行此操作。如果我在这里重新发明轮子,我想我会犯很多错误。