Start · Sprachen · PHP · Referenz · imap_header

imap_header

Funktion

Alias von <code>imap_headerinfo()</code> — liest den Header einer IMAP-Nachricht als Objekt aus.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_header(IMAP\Connection $imap, int $message_num, int $fromlength = 0, int $subjectlength = 0, string $defaulthost = ""): stdClass|false

Beschreibung

imap_header() ist ein direkter Alias der Funktion imap_headerinfo() und verhält sich in jeder Hinsicht identisch. Sie liest den vollständigen Mail-Header einer bestimmten Nachricht aus einem geöffneten IMAP-Postfach und gibt ihn als stdClass-Objekt zurück.

Das zurückgegebene Objekt enthält zahlreiche Felder wie subject, from, to, date, message_id, references sowie vorbereitete Kurzversionen der Absender- und Empfängeradressen. Es eignet sich gut zum schnellen Auslesen von E-Mail-Metadaten, ohne den gesamten Nachrichteninhalt abrufen zu müssen.

Da es sich um einen Alias handelt, wird empfohlen, stattdessen direkt imap_headerinfo() zu verwenden. Aliases können in zukünftigen PHP-Versionen ohne Vorwarnung entfernt werden.

Die Funktion ist Teil der IMAP-Erweiterung (ext/imap), die seit PHP 8.4 als PECL-Paket ausgelagert wurde. Sie benötigt eine aktive IMAP-Verbindung, die über imap_open() geöffnet wurde.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindungsressource, die mit imap_open() geöffnet wurde.
$message_num Pflicht int Die Nachrichtennummer (Sequenznummer, nicht UID) der E-Mail im aktuell geöffneten Postfach. Beginnt bei 1.
$fromlength int 0 Maximale Anzahl Zeichen für das Feld fetchfrom im Rückgabeobjekt. 0 deaktiviert dieses Feld.
$subjectlength int 0 Maximale Anzahl Zeichen für das Feld fetchsubject im Rückgabeobjekt. 0 deaktiviert dieses Feld.
$defaulthost string "" Standard-Hostname, der für unvollständige Adressen im Header verwendet wird. Wird selten benötigt.

Rückgabewert

Typ
stdClass|false
Beschreibung
Gibt ein stdClass-Objekt mit den Header-Informationen der Nachricht zurück, oder false bei einem Fehler (z. B. ungültige Nachrichtennummer oder geschlossene Verbindung). Wichtige Felder: subject, from (Array), to (Array), date, message_id, size, udate (Unix-Timestamp), Unseen, Flagged, Answered, Deleted, Draft, Recent.

Beispiele

E-Mail-Header der ersten Nachricht auslesen

<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'user@example.com', 'geheimesPasswort');

if ($imap === false) {
    die('Verbindung fehlgeschlagen: ' . imap_last_error());
}

// Header der ersten Nachricht abrufen
$header = imap_header($imap, 1, 50, 100);

if ($header !== false) {
    echo 'Von:     ' . $header->fetchfrom . PHP_EOL;
    echo 'Betreff: ' . $header->fetchsubject . PHP_EOL;
    echo 'Datum:   ' . $header->date . PHP_EOL;
    echo 'Größe:   ' . $header->size . ' Bytes' . PHP_EOL;
} else {
    echo 'Fehler beim Lesen des Headers.';
}

imap_close($imap);
Von: Max Mustermann <max@example.com> Betreff: Willkommen bei unserem Service Datum: Mon, 10 Jun 2024 08:23:15 +0200 Größe: 2048 Bytes

Alle Nachrichten im Postfach mit Betreff auflisten

<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'user@example.com', 'geheimesPasswort');

if ($imap === false) {
    die('Verbindung fehlgeschlagen.');
}

$anzahl = imap_num_msg($imap);
echo "Nachrichten im Postfach: $anzahl" . PHP_EOL;

for ($i = 1; $i <= $anzahl; $i++) {
    // Bevorzugte Alternative: imap_headerinfo()
    $header = imap_header($imap, $i, 30, 80);
    if ($header !== false) {
        $status = ($header->Unseen === 'U') ? '[NEU]' : '     ';
        echo "$status #$i: " . $header->fetchsubject . PHP_EOL;
    }
}

imap_close($imap);
[NEU] #1: Willkommen bei unserem Service #2: Ihre Rechnung vom Juni 2024 [NEU] #3: Meeting-Einladung für Montag

// Wichtig · Fallstricke

Alias-Warnung: imap_header() ist ein Alias von imap_headerinfo(). Es wird empfohlen, stets imap_headerinfo() zu verwenden, da Aliases in zukünftigen PHP-Versionen entfernt werden können.

PHP 8.4: Die IMAP-Erweiterung wurde aus dem PHP-Core entfernt und steht nur noch über PECL zur Verfügung. Projekte, die diese Funktion nutzen, müssen die Erweiterung separat installieren.

Sequenznummer vs. UID: Der Parameter message_num erwartet die Sequenznummer, nicht die UID. Nach dem Löschen von Nachrichten können sich Sequenznummern ändern. Für stabile Referenzierung empfiehlt sich imap_fetch_overview() in Kombination mit UIDs.

Sicherheit: Zeigen Sie Felder wie subject oder from im Browser an, müssen diese zwingend mit htmlspecialchars() kodiert werden, um XSS-Angriffe über manipulierte Mail-Header zu verhindern.