Frage

Ich habe eine Datei mit einer E -Mail im "Klartext -MIME -Nachrichtenformat". Ich bin mir nicht sicher, ob dies das EML -Format ist. Die E -Mail enthält einen Anhang und ich möchte den Anhang extrahieren und diese Dateien erneut erstellen. So sieht der Anhangsteil aus - -

...
...
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--

Ich kann sehen, dass der Teil zwischen X-Attachment-Id: f_gj5n2yx60 und ZyBmZyAKCjIKNDIzCnQ2Mwo=, Beide einschließlich des Inhalts des ersten Anhangs. Ich möchte diese Anhänge analysieren (Dateinamen und Inhalt und diese Dateien).

Ich habe diese Datei erhalten, nachdem ich eine DBX -Formatdatei mit a DBX -Parser Klasse in PHP -Klassen erhältlich.

Ich habe an vielen Orten gesucht und habe hier hier nicht viel darüber diskutiert Skript zum Analyse von E -Mails für Anhänge. Vielleicht habe ich beim Suchen einige Begriffe verpasst. In dieser Antwort wird es erwähnt -

Sie können die Grenzen verwenden, um die codierten Base64 -Informationen zu extrahieren

Aber ich bin mir nicht sicher, welche Grenzen die Grenzen sind und wie genau die Grenzen verwendet werden? Es müssen bereits einige Bibliotheken oder eine gut definierte Methode geben. Ich denke, ich werde viele Fehler begehen, wenn ich versuche, das Rad hier neu zu erfinden.

War es hilfreich?

Lösung

Es gibt eine PHP -MailParse -Erweiterung, haben Sie es versucht?

Der manuelle Weg wäre, die Mail -Linie nach Zeile zu verarbeiten. Wenn Sie Ihren ersten Header vom Typ Content-Typ (dieser in Ihrem Beispiel) drücken: Inhaltstyp: Multipart/Mixed; Grenze = 20CF3054AC85D97721049A465E12

Sie haben die Grenze. Diese Zeichenfolge wird als Grenze zwischen Ihren mehreren Teilen verwendet (deshalb nennen sie sie Multipart). Jedes Mal, wenn eine Linie mit den Strichen und dieser Saite beginnt, beginnt ein neuer Teil. In Ihrem Beispiel: -20CF3054AC85D97721049A465E12

Jeder Teil beginnt mit Header, einer leeren Linie und Inhalten. Wenn Sie sich den Inhalt der Header ansehen, können Sie feststellen, welche Anhänge, welcher Typ und deren Dateinamen sind. Lesen Sie den gesamten Inhalt durch, ziehen Sie die Leerzeichen aus, Base64_Decode, und Sie haben den binären Inhalt der Datei. Hilft das?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top