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