Body von Emails mit Attachments

ICPUI

Mitglied
Ich brauche Hilfe bei einem Script, welches Emails per imap ausliest. Normalerweise lese ich den body der Emails mit imap_fetchbody(); aus. Bei Emails ohne Attachments funktioniert das auch recht gut. Bei Emails mit Attachments, bekomme ich mit imap_fetchbody(X, X, 1); bei Mails mit 2 Mime-Typen (text/plain, text/html) immer einen Code in diesem Format:
Code:
------=_Part_922_24602560.1200133280972
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

TEXT

------=_Part_922_24602560.1200133280972
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

TEXT

------=_Part_922_24602560.1200133280972--

Wie kann ich da auch jeweils HTML und Text auslesen? Komme einfach nicht mehr weiter
Vielen Dank
ICPUI
 
Bei mehrteiligen Nachrichten („multipart“-Inhaltstyp) wird eine Grenzzeichenkette angegeben (boundary-Parameter des „Content-Type“-Header-Felds). Anhand dieser Grenzzeichenkette (in deinem Fall das „----=_Part_922_24602560.1200133280972“) kann die Nachricht in ihre Einzelteile zerlegt werden, die dann wieder wie normale Nachrichten aufgebaut sind.
Noch ein Hinweis: die Grenzzeichenketten innerhalb der Nachricht beginnen alle mit zwei Bindestrichen, dem dann die im boundary-Parameter angegebene Zeichenkette folgt. Die letzte Grenzangabe hat dazu noch am Ende zwei zusätzliche Bindestriche. Schematisch sieht es also wie folgt aus:
Code:
MIME-version: 1.0
Content-Type: multipart/alternative; boundary=foobar

Mehrteilige Nachricht mit alternativen Teilen
--foobar
Content-Type: text/plain

Klartextnachricht
--foobar
Content-Type: text/html

HTML-Nachricht
--foobar--
Der „multipart/alternative“-Inhaltstyp bedeutet, dass die Einzelteile Alternativen zueinander sind. Das heißt in diesem Fall beispielsweise, dass E-Mail-Programme je nach bevorzugter Version entweder die Klartext- oder die HTML-Version darstellen können.
 
Vielen Dank für die Antwort Gumbo. Leider hat deine Erklärung nicht ganz meine Frage beantwortet. Ich weiss wie ich aus mehrteiligen Nachrichten einzelne Teile, also z.B. text/html, zerlegen kann. Ich benutze dafür die Funktion imap_fetchbody();.Für den 1. Teil, welcher meistens text/plain ist benutze ich imap_fetchbody($mailbox, $_GET['uid'], 1); und für den zweiten Teil, welcher dann HTML ist imap_fetchbody($mailbox, $_GET['uid'], 2);.
Das Problem ist nun, dass, wenn ich eine Mail bekomme, welche einen Anhang sowie html und text besitzt mit dem imap_fetchbody($mailbox, $_GET['uid'], 1); den ganzen Teil wie im ersten Post gezeigt bekomme und bei imap_fetchbody($mailbox, $_GET['uid'], 2); dann den verschlüsselten Anhang.
Nun interessierts mich, wie ich das im ersten Post gezeigte Beispiel zerlege.
 
Ein Teil einer mehrteiligen Nachricht kann wiederum aus mehreren Teilen bestehen. Diese folgen dann wieder den genannten Regeln.
Ich denke, dass Folgendes den ersten Teil des ersten Teils zurückgibt:
PHP:
imap_fetchbody($mailbox, $_GET['uid'], '1.1');
 
Zurück