Start · Sprachen · PHP · Referenz · mailparse_rfc822_parse_addresses

mailparse_rfc822_parse_addresses

Funktion

Parst einen RFC-822-konformen Adress-String und gibt ein Array mit den enthaltenen E-Mail-Adressen zurück.

seit PHP 4.1.0 Kategorie: http

Signatur

mailparse_rfc822_parse_addresses(string $addresses): array

Beschreibung

mailparse_rfc822_parse_addresses() analysiert einen E-Mail-Adress-String gemäß RFC 822 und zerlegt ihn in seine Bestandteile. Das ist besonders nützlich, wenn man To:-, From:- oder CC:-Header aus eingehenden E-Mails auswerten möchte, da diese mehrere Adressen in verschiedenen Formaten enthalten können (z. B. Name <adresse@example.com> oder einfach adresse@example.com).

Die Funktion gibt ein Array von assoziativen Arrays zurück, wobei jedes Element die Schlüssel display (Anzeigename), address (reine E-Mail-Adresse) und is_group (ob es sich um eine RFC-822-Gruppe handelt) enthält. Damit können Anzeigename und Adresse sauber getrennt und separat weiterverarbeitet werden.

Die Funktion gehört zur PECL-Erweiterung mailparse und muss daher explizit installiert sein. Sie eignet sich gut für die Vorverarbeitung von Adressfeldern in E-Mail-Parsern oder für Validierungsroutinen, die RFC-822-Konformität sicherstellen sollen.

Parameter

Name Typ Default Beschreibung
$addresses Pflicht string Ein RFC-822-konformer Adress-String, der eine oder mehrere E-Mail-Adressen enthält, z. B. "Max Mustermann <max@example.com>, info@example.org".

Rückgabewert

Typ
array
Beschreibung

Gibt ein indiziertes Array zurück, wobei jedes Element ein assoziatives Array mit folgenden Schlüsseln ist:

  • display – Der Anzeigename (Display Name), falls vorhanden, sonst ein leerer String.
  • address – Die eigentliche E-Mail-Adresse.
  • is_grouptrue, wenn es sich um eine RFC-822-Gruppenadresse handelt, ansonsten false.

Beispiele

Einzelne Adresse mit Anzeigename parsen

<?php
$result = mailparse_rfc822_parse_addresses('Max Mustermann <max@example.com>');
print_r($result);
Array ( [0] => Array ( [display] => Max Mustermann [address] => max@example.com [is_group] => ) )

Mehrere Adressen aus einem E-Mail-Header parsen

<?php
$header = 'Max Mustermann <max@example.com>, info@example.org, "Erika Muster" <erika@example.net>';
$addresses = mailparse_rfc822_parse_addresses($header);

foreach ($addresses as $addr) {
    $display = $addr['display'] !== '' ? $addr['display'] : '(kein Name)';
    echo "Name: {$display}, Adresse: {$addr['address']}\n";
}
Name: Max Mustermann, Adresse: max@example.com Name: (kein Name), Adresse: info@example.org Name: Erika Muster, Adresse: erika@example.net

// Wichtig · Fallstricke

Voraussetzung: Die Funktion ist Teil der PECL-Erweiterung mailparse, die separat installiert werden muss (pecl install mailparse). Sie ist nicht im PHP-Core enthalten.

Sicherheitshinweis: Die zurückgegebenen Adresswerte sollten vor einer Weiterverarbeitung (z. B. als Empfänger beim Versand von E-Mails) nochmals validiert werden, da nicht jede syntaktisch korrekte RFC-822-Adresse auch eine tatsächlich gültige und zustellbare Adresse darstellt. Verwende zusätzlich filter_var($addr, FILTER_VALIDATE_EMAIL).

Gruppenformat: RFC-822-Gruppen (z. B. gruppe: addr1, addr2;) werden erkannt und mit is_group = true markiert. Der Umgang damit muss in der eigenen Anwendungslogik explizit berücksichtigt werden.