У меня есть файл, содержащий электронное письмо в формате «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=
, в том числе содержимое первого вложения.Я хочу проанализировать эти вложения (имена файлов и их содержимое и создать эти файлы).
Я получил этот файл после анализа файла формата dbx с использованием класса DBX Parser , доступного в классах PHP.
Я искал во многих местах и не нашел большого обсуждения по этому поводу здесь, кроме SO 1012 * Script для разбора писем на вложения .Может быть, я пропустил некоторые термины при поиске.В этом ответе упоминается -
вы можете использовать границы для извлечения закодированной в base64 информации
Но я не уверен, какие границы и как именно использоватьграницы?Там уже должно быть несколько библиотек или какой-то четко определенный способ сделать это.Думаю, я совершу много ошибок, если попытаюсь изобрести колесо здесь.