Wie man Raw Email in PHP analysiert: Eine umfassende Anleitung

Das Parsen von Raw Email kann eine herausfordernde Aufgabe sein, insbesondere wenn Sie auf unterschiedliche Formate und Konfigurationen stoßen. Wenn Sie mit instabilen oder brutalen Lösungen zu kämpfen haben, die bei der geringsten Änderung zusammenbrechen, sind Sie nicht allein. Viele Entwickler stehen vor ähnlichen Problemen, wenn sie versuchen, die Teile einer E-Mail-Nachricht effizient zu verarbeiten – sei es der Betreff, der Absender, der Inhalt oder die Anhänge. In diesem Leitfaden erläutern wir, wie man Raw Email in PHP effizient und korrekt parst.

Verständnis der E-Mail-Struktur

Bevor wir mit dem Codieren beginnen, ist es entscheidend, die grundlegende Struktur einer E-Mail zu verstehen, wie sie in Standards wie RFC2822 definiert ist. Eine E-Mail besteht aus zwei Hauptkomponenten:

  1. Header: Diese enthalten Metadaten zur E-Mail.
  2. Body: Dies ist der eigentliche Inhalt der E-Mail.

E-Mail-Format

Eine gut formatierte E-Mail sieht in der Regel so aus:

HEADERS

BODY

Die Trennung zwischen Headern und Body wird durch eine doppelte Leerzeile markiert.

Aufschlüsselung von Headern und Body

  • Header: Jeder Header folgt dem Format:

    HSTRING:HTEXT
    
    • HSTRING beginnt am Anfang einer Zeile ohne Leerzeichen oder Doppelpunkte.
    • HTEXT kann eine Vielzahl von Textzeichen enthalten, einschließlich neuer Zeilen, wenn sie von Leerzeichen gefolgt werden.
  • Body: Dazu gehören alle Daten, die nach der ersten leeren Zeile kommen. Zum Beispiel:

HEADER: HEADER TEXT
HEADER: MORE HEADER TEXT
HEADER: LAST HEADER

DAS IST BELBITER
BELBITER INHALT

Raw Email in PHP parsen

Nun, da wir die Struktur verstehen, lassen Sie uns Schritt für Schritt untersuchen, wie man Raw Email in PHP parst.

Schritt 1: Rohdaten der E-Mail lesen

Zuerst müssen Sie die Rohdaten der E-Mail lesen. Wenn Ihr PHP-Skript so eingerichtet ist, dass es E-Mails über eine Pipe verarbeitet, wird es normalerweise die eingehenden Daten direkt vom Standardinput erfassen.

Beispiel:

$raw_email = file_get_contents('php://stdin'); // Ersetzen Sie dies durch die tatsächliche Eingabemethode

Schritt 2: Roh-E-Mail in Header und Body aufteilen

Als nächstes müssen Sie die rohe E-Mail-Zeichenfolge in Header und Body aufteilen:

list($headers, $body) = explode("\n\n", $raw_email, 2);

Schritt 3: Header parsen

Verwenden Sie die Funktion explode, um die einzelnen Header zu trennen:

$header_lines = explode("\n", $headers);
$parsed_headers = [];

foreach ($header_lines as $line) {
    // Behandlung von Fortsetzungslinien
    if (isset($current_header)) {
        $parsed_headers[$current_header] .= ' ' . trim($line);
    } else {
        list($key, $value) = explode(':', $line, 2);
        $current_header = trim($key);
        $parsed_headers[$current_header] = trim($value);
    }
}

Schritt 4: Body verarbeiten

Der Body kann verschiedene Formate enthalten; stellen Sie sicher, dass Sie MIME-Typen entsprechend behandeln. Möglicherweise begegnen Sie Klartext, HTML oder sogar Anhängen. So lesen Sie den Body:

$body = trim($body);

Hier benötigen Sie möglicherweise zusätzliche Logik, abhängig von Ihren spezifischen Anforderungen bei der Verarbeitung oder Speicherung des Body-Inhalts.

Fazit

Das Parsen von Raw Email in PHP ist eine grundlegende Aufgabe, die ohne Frameworks bewältigt werden kann, sofern Sie klar verstehen, wie E-Mail-Formate funktionieren. Durch die Befolgung der in diesem Leitfaden dargelegten Schritte können Sie einen effektiven Parser erstellen, der unabhängig von Variationen in den empfangenen E-Mails konsistent funktioniert.

Wenn Sie Fragen haben oder weitere Anleitungen benötigen, zögern Sie nicht, sich mit spezifischen Anwendungsfällen zu melden. Happy Coding!