Start · Sprachen · PHP · Referenz · imap_listsubscribed

imap_listsubscribed

Funktion

Alias von <code>imap_lsub()</code> — gibt eine Liste aller abonnierten Mailboxen zurück.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

imap_listsubscribed() ist ein direkter Alias der Funktion imap_lsub() und liefert eine Liste aller Mailboxen, die der aktuelle Benutzer auf dem IMAP-Server abonniert hat. Das Ergebnis ist ein Array mit den vollständig qualifizierten Mailbox-Namen.

Die Funktion eignet sich, um dem Benutzer eine gefilterte Ansicht seiner abonnierten Ordner zu präsentieren, anstatt alle auf dem Server vorhandenen Ordner (imap_list()) anzuzeigen. Gerade bei Mailservern mit einer großen Anzahl von Ordnern ist dies sinnvoller.

Der Parameter $pattern erlaubt es, die Ergebnisse auf bestimmte Namensmuster zu beschränken. Das Zeichen * steht dabei für beliebige Zeichen inklusive Hierarchietrennzeichen, während % nur bis zum nächsten Hierarchietrennzeichen matcht.

Hinweis: Da es sich um einen Alias handelt, sollte in neuem Code bevorzugt imap_lsub() verwendet werden. Ab PHP 8.1 ist die IMAP-Erweiterung ausgelagert und muss separat installiert werden.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine gültige IMAP-Verbindungsinstanz, die zuvor mit imap_open() erstellt wurde.
$reference Pflicht string Der Basis-Referenzpfad, z. B. {imap.example.com}. Legt den Ausgangspunkt für die Mailbox-Suche fest.
$pattern Pflicht string Suchmuster für die Mailbox-Namen. * matcht alles einschließlich Hierarchietrennzeichen, % matcht nur bis zum nächsten Trennzeichen. Verwende * für alle abonnierten Ordner.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den Namen aller abonnierten Mailboxen zurück, die dem angegebenen Muster entsprechen. Im Fehlerfall wird false zurückgegeben.

Beispiele

Alle abonnierten Mailboxen auflisten

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

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

$subscribed = imap_listsubscribed($imap, '{imap.example.com}', '*');

if ($subscribed === false) {
    echo 'Keine abonnierten Mailboxen gefunden oder Fehler aufgetreten.';
} else {
    echo 'Abonnierte Mailboxen:' . PHP_EOL;
    foreach ($subscribed as $mailbox) {
        echo '  ' . $mailbox . PHP_EOL;
    }
}

imap_close($imap);
Abonnierte Mailboxen: {imap.example.com}INBOX {imap.example.com}INBOX.Sent {imap.example.com}INBOX.Drafts

Nur abonnierte Unterordner von INBOX auflisten

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

if ($imap === false) {
    die('Verbindung fehlgeschlagen.');
}

// Nur direkte Unterordner von INBOX (kein tieferes Matching)
$subscribed = imap_listsubscribed($imap, '{imap.example.com}', 'INBOX.%');

if (is_array($subscribed)) {
    echo 'Abonnierte INBOX-Unterordner:' . PHP_EOL;
    foreach ($subscribed as $mailbox) {
        // Nur den Ordnernamen ohne Server-Prefix anzeigen
        $name = preg_replace('/^\{[^}]+\}/', '', $mailbox);
        echo '  ' . $name . PHP_EOL;
    }
}

imap_close($imap);
Abonnierte INBOX-Unterordner: INBOX.Sent INBOX.Trash

// Wichtig · Fallstricke

Alias: imap_listsubscribed() ist ein vollständiger Alias von imap_lsub(). Für neuen Code wird empfohlen, direkt imap_lsub() zu verwenden, da Aliase in zukünftigen PHP-Versionen möglicherweise entfernt werden könnten.

PHP 8.1+: Ab PHP 8.1 wurde die IMAP-Erweiterung aus dem PHP-Kern ausgelagert. Sie muss als separates PECL-Paket (imap) installiert und aktiviert werden. Der Rückgabetyp des $imap-Parameters änderte sich von resource zu IMAP\Connection.

Sicherheit: Übergebe niemals vom Benutzer unkontrolliert eingegebene Daten als $reference oder $pattern, da dies zu unbeabsichtigtem Verhalten führen kann.