Signatur
Beschreibung
imap_listmailbox() ist ein direkter Alias der Funktion imap_list() und verhält sich identisch zu dieser. Sie gibt ein Array mit den Namen aller Mailboxen (Ordner) zurück, die auf dem IMAP-Server unter der angegebenen Referenz dem Suchmuster entsprechen.
Die Funktion wird typischerweise eingesetzt, um alle verfügbaren Ordner eines IMAP-Postfachs aufzulisten, etwa für eine Ordnerübersicht in einem Webmailer. Der Parameter $reference gibt den Basispfad auf dem Server an (z. B. den Servernamen in geschweiften Klammern), während $pattern ein Suchmuster wie * (alles) oder % (nur aktuelle Ebene) erwartet.
Da imap_listmailbox() lediglich ein Alias ist, empfiehlt es sich, stattdessen direkt imap_list() zu verwenden, um die Lesbarkeit des Codes zu verbessern und eventuelle zukünftige Deprecations zu vermeiden. Die IMAP-Erweiterung wurde in PHP 8.1 mit der neuen IMAP\Connection-Klasse aktualisiert; in früheren Versionen wurde eine resource verwendet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $imap Pflicht | IMAP\Connection | Eine aktive IMAP-Verbindung, wie sie von imap_open() zurückgegeben wird. In PHP < 8.1 war dies eine resource. |
|
| $reference Pflicht | string | Der Basisreferenzpfad auf dem Server, üblicherweise in der Form {imap.example.com} oder {imap.example.com}INBOX. |
|
| $pattern Pflicht | string | Suchmuster für die Mailboxnamen. * steht für alle Mailboxen (auch in Unterordnern), % nur für Mailboxen auf der aktuellen Ebene. |
Rückgabewert
false zurückgegeben.Beispiele
Alle Mailboxen eines IMAP-Kontos auflisten
<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}', 'benutzer@example.com', 'geheimes_passwort');
if ($imap === false) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
// Alle Mailboxen (Ordner) abrufen
$mailboxen = imap_listmailbox($imap, '{imap.example.com:993/imap/ssl}', '*');
if ($mailboxen === false) {
echo 'Keine Mailboxen gefunden oder Fehler aufgetreten.';
} else {
echo 'Gefundene Mailboxen:' . PHP_EOL;
foreach ($mailboxen as $mailbox) {
echo ' - ' . $mailbox . PHP_EOL;
}
}
imap_close($imap);
Nur Mailboxen der obersten Ebene auflisten (kein Unterordner-Rekursion)
<?php
$imap = imap_open('{imap.example.com:993/imap/ssl}', 'benutzer@example.com', 'geheimes_passwort');
if ($imap === false) {
die('Verbindung fehlgeschlagen: ' . imap_last_error());
}
// Nur oberste Ebene mit '%' als Muster
$mailboxen = imap_listmailbox($imap, '{imap.example.com:993/imap/ssl}', '%');
if (is_array($mailboxen)) {
foreach ($mailboxen as $mailbox) {
// Servernamen-Präfix entfernen für übersichtliche Ausgabe
$name = str_replace('{imap.example.com:993/imap/ssl}', '', $mailbox);
echo $name . PHP_EOL;
}
}
imap_close($imap);
// Wichtig · Fallstricke
Alias-Hinweis: imap_listmailbox() ist ein reiner Alias für imap_list(). Es wird empfohlen, direkt imap_list() zu verwenden, da Aliasse in zukünftigen PHP-Versionen entfernt werden könnten.
PHP 8.1: Der Parameter $imap erwartet seit PHP 8.1 ein Objekt vom Typ IMAP\Connection anstelle einer resource. Code, der ältere PHP-Versionen unterstützen muss, sollte dies berücksichtigen.
IMAP-Erweiterung: Die IMAP-Erweiterung ist nicht standardmäßig aktiviert und muss in der php.ini oder beim Kompilieren mit --with-imap aktiviert werden. Prüfen Sie die Verfügbarkeit mit extension_loaded('imap').