Signatur
Beschreibung
imap_headers() liest die Kopfzeileninformationen sämtlicher Nachrichten im aktuell ausgewählten Postfach und gibt sie als indiziertes Array von Zeichenketten zurück. Jeder Eintrag entspricht einer Nachricht und enthält kompakt zusammengefasste Metadaten wie Absender, Betreff, Datum und Größe – in einem menschenlesbaren Format, das dem klassischen Mailbox-Listing ähnelt.
Die Funktion ist besonders nützlich, wenn man schnell eine Übersicht aller Nachrichten in einem Postfach erhalten möchte, ohne jede einzelne Nachricht mit imap_fetchheader() oder imap_headerinfo() abzufragen. Die zurückgegebenen Zeichenketten sind jedoch nicht strukturiert und müssen bei Bedarf selbst geparst werden.
Für strukturierten Zugriff auf einzelne Header-Felder (z. B. From, Subject, Date) empfiehlt sich stattdessen imap_headerinfo(), das ein Objekt mit entsprechenden Eigenschaften zurückgibt. imap_headers() eignet sich eher für diagnostische Zwecke oder einfache Listenansichten.
Zu beachten ist, dass die IMAP-Erweiterung ab PHP 8.1 als IMAP\Connection-Objekt übergeben werden muss; zuvor wurde eine Ressource verwendet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $imap Pflicht | IMAP\Connection | Eine aktive IMAP-Verbindung, die zuvor mit imap_open() geöffnet wurde. |
Rückgabewert
false zurückgegeben.Beispiele
Alle Postfach-Kopfzeilen ausgeben
<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'geheim');
if ($imap === false) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
$headers = imap_headers($imap);
if ($headers === false) {
echo 'Fehler beim Abrufen der Kopfzeilen.';
} else {
echo 'Anzahl Nachrichten: ' . count($headers) . PHP_EOL;
foreach ($headers as $index => $header) {
echo ($index + 1) . ': ' . $header . PHP_EOL;
}
}
imap_close($imap);
Nachrichten filtern – nur Einträge mit bestimmtem Stichwort anzeigen
<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'geheim');
if ($imap === false) {
die('Verbindung fehlgeschlagen.');
}
$headers = imap_headers($imap);
if (is_array($headers)) {
$suchbegriff = 'Bestellung';
$treffer = array_filter($headers, function (string $header) use ($suchbegriff): bool {
return stripos($header, $suchbegriff) !== false;
});
echo 'Gefundene Nachrichten mit "' . $suchbegriff . '":' . PHP_EOL;
foreach ($treffer as $header) {
echo trim($header) . PHP_EOL;
}
}
imap_close($imap);
// Wichtig · Fallstricke
Veraltete Ressource: Vor PHP 8.1 wurde eine IMAP-Ressource (resource) übergeben. Ab PHP 8.1 ist der Typ IMAP\Connection erforderlich. Code, der noch Ressourcen verwendet, muss angepasst werden.
Kein strukturiertes Parsing: Die zurückgegebenen Zeichenketten sind für Menschen lesbar, aber nicht maschinell zuverlässig parsebar. Für strukturierten Zugriff auf einzelne Header-Felder sollte imap_headerinfo() oder imap_fetch_overview() verwendet werden.
Leistung bei großen Postfächern: Bei sehr vielen Nachrichten kann die Funktion langsam sein, da alle Header auf einmal abgerufen werden. In diesem Fall ist eine seitenweise Abfrage mit imap_fetch_overview() und Sequenznummern effizienter.
Sicherheit: Passwörter und Zugangsdaten sollten niemals im Quellcode stehen, sondern aus Umgebungsvariablen oder einer sicheren Konfigurationsdatei geladen werden.