Start · Sprachen · PHP · Referenz · imap_listmailbox

imap_listmailbox

Funktion

Alias von <code>imap_list()</code> — gibt eine Liste von Mailboxen zurück, die dem angegebenen Muster entsprechen.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_listmailbox(IMAP\Connection $imap, string $reference, string $pattern): array|false

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

Typ
array|false
Beschreibung
Gibt ein Array mit den vollständigen Namen der gefundenen Mailboxen zurück. Bei einem Fehler wird 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);
Gefundene Mailboxen: - {imap.example.com:993/imap/ssl}INBOX - {imap.example.com:993/imap/ssl}Gesendet - {imap.example.com:993/imap/ssl}Papierkorb

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);
INBOX Gesendet Papierkorb

// 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').