Start · Sprachen · PHP · Referenz · imap_headerinfo

imap_headerinfo

Funktion

Liest die Kopfdaten (Header) einer IMAP-Nachricht aus und gibt sie als <code>stdClass</code>-Objekt zurück.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

imap_headerinfo() ruft die Kopfdaten einer bestimmten Nachricht aus einem IMAP-Postfach ab und liefert ein strukturiertes stdClass-Objekt mit allen relevanten Header-Feldern wie Absender, Empfänger, Betreff, Datum und Nachrichtenstatus.

Die Funktion ist besonders nützlich, wenn man gezielt Metadaten einzelner E-Mails verarbeiten möchte, ohne den vollständigen Nachrichtentext laden zu müssen. Sie gibt unter anderem Felder wie subject, from, to, date, message_id, Msgno, Unseen, Flagged, Answered, Deleted und Draft zurück.

Die Parameter fromlength und subjectlength begrenzen die Länge der vorformatierten Felder fetchfrom und fetchsubject im Rückgabeobjekt. Mit defaulthost kann ein Standard-Hostname für unvollständige Adressen angegeben werden.

Beachte, dass die IMAP-Erweiterung in PHP 8.1 die Verbindungsressource von resource auf IMAP\Connection umgestellt hat. Die Funktion setzt eine aktive IMAP-Verbindung voraus, die zuvor mit imap_open() erzeugt wurde.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindung, die mit imap_open() geöffnet wurde.
$message_num Pflicht int Die fortlaufende Nachrichtennummer (nicht die UID) der Nachricht im aktuell geöffneten Postfach.
$fromlength int 0 Maximale Zeichenanzahl für das vorformatierte Feld fetchfrom. Bei 0 wird kein Limit gesetzt.
$subjectlength int 0 Maximale Zeichenanzahl für das vorformatierte Feld fetchsubject. Bei 0 wird kein Limit gesetzt.
$defaulthost string|null null Standard-Hostname, der für E-Mail-Adressen ohne expliziten Host-Anteil verwendet wird.

Rückgabewert

Typ
stdClass|false
Beschreibung
Gibt bei Erfolg ein stdClass-Objekt mit den Header-Informationen zurück. Bei einem Fehler wird false zurückgegeben. Das Objekt enthält u. a. die Felder date, subject, from (Array von Adressobjekten), to, message_id, Msgno, Unseen, Flagged, Answered, Deleted, Draft, fetchfrom und fetchsubject.

Beispiele

Betreff und Absender einer Nachricht ausgeben

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

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

$msgNum = 1; // Erste Nachricht im Postfach
$header = imap_headerinfo($imap, $msgNum, 50, 80);

if ($header) {
    echo 'Betreff: ' . $header->fetchsubject . PHP_EOL;
    echo 'Von:     ' . $header->fetchfrom . PHP_EOL;
    echo 'Datum:   ' . $header->date . PHP_EOL;
    echo 'Gelesen: ' . ($header->Unseen === 'U' ? 'Nein' : 'Ja') . PHP_EOL;
} else {
    echo 'Nachricht nicht gefunden.';
}

imap_close($imap);
Betreff: Wichtige Info von der Konferenz Von: Max Mustermann <max@example.com> Datum: Mon, 12 Jun 2023 10:45:00 +0200 Gelesen: Nein

Alle Empfänger einer Nachricht auflisten

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

$header = imap_headerinfo($imap, 3);

if ($header && isset($header->to)) {
    echo 'Empfänger:' . PHP_EOL;
    foreach ($header->to as $empfaenger) {
        $name    = isset($empfaenger->personal) ? $empfaenger->personal : '';
        $adresse = $empfaenger->mailbox . '@' . $empfaenger->host;
        echo '  - ' . ($name ? "$name <$adresse>" : $adresse) . PHP_EOL;
    }
}

imap_close($imap);
Empfänger: - Erika Musterfrau <erika@example.com> - info@example.org

// Wichtig · Fallstricke

Nachrichtennummer vs. UID: Der Parameter message_num ist die sequenzielle Nachrichtennummer, keine permanente UID. Nach dem Löschen von Nachrichten oder beim nächsten Verbindungsaufbau können sich die Nummern ändern. Für dauerhafte Referenzen sollte imap_uid() verwendet werden.

Zeichenkodierung: Betreff und Absendername können MIME-kodiert sein (z. B. =?UTF-8?B?...?=). Zur Dekodierung steht imap_mime_header_decode() zur Verfügung.

PHP 8.1: Ab PHP 8.1 erwartet die Funktion ein IMAP\Connection-Objekt statt einer veralteten resource. Älterer Code muss ggf. angepasst werden.