Signatur
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
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);
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);
// 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.