Christian: Trennung von Headerinfos, Subject und Body in einer E-Mail

Hi,

ich habe folgendes vor:

ich möchte auf einem Mailserver alle vorhandenen E-Mails auslesen und so wie Sie sind an EINE Adresse weiterleiten.

Wie ich das auslese, habe ich inzwischen schon rausgefunden.

Ich kann die gesamte E-Mail (d.h. wirklich alles, inkl Header) auslesen. Das stellt dann einfach nur einen String dar.

Nun die Frage, wie sind Header unter sich getrennt. Wie krieg ich den Body und den Betreff??

sind die mit \n oder \r\n getrennt??

Dann würde ich die nämlich einfach mit mail() weiterleiten.

Hier wurde auch schon gemeint, man solle die imap-Funktionen benutzen, aber geht das bei einem POP3-Account??

Ich verwende dafür PHP.

Christian

  1. Hallo Christian,

    Nun die Frage, wie sind Header unter sich getrennt. Wie krieg ich den Body und den Betreff??

    Das Format einer Internetnachricht wird in RFC 2822 festgelegt: http://www.ietf.org/rfc/rfc2822.txt

    sind die mit \n oder \r\n getrennt??

    Das Zeilentrennzeichen ist \r\n; der Header ist mit zwei aufeinanderfolgende Zeilentrennzeichen vom Body getrennt. Jeder Header-"Eintrag" ist in _genau_ einer Zeile enthalten. Jeder einzelne sieht so aus: 'Name: Wert'. Für den Betreff heißt das also: 'Subject: ...'.

    Du könntest also die Mail nach "\r\n\r\n" trennen, dabei sollten maximal zwei Teile rauskommen. Dann könntest Du die Header nach "\r\n" trennen und dann jeden einzelnen Eintrag nach ': ' trennen. Dann hättest Du die Namen und die Werte der einzelnen Einträge.

    Sinnvoller als \r\n wäre allerdings der reguläre Ausdruck (\015\012|\012|\015) da Du ja nicht weißt, ob Dir die Zeilenenden nicht irgendwie doch einen Streich spielen.

    Hier wurde auch schon gemeint, man solle die imap-Funktionen benutzen, aber geht das bei einem POP3-Account??

    Ja, die imap-Funktionen funktionieren auch mit POP3. Schau einfach mal in die PHP-Doku.

    Viele Grüße,
    Christian