Start · Sprachen · PHP · Referenz · imap_subscribe

imap_subscribe

Funktion

Abonniert ein Postfach (Mailbox) auf dem IMAP-Server, sodass es in der Abonnements-Liste erscheint.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_subscribe(IMAP\Connection $imap, string $mailbox): bool

Beschreibung

imap_subscribe markiert eine Mailbox auf dem IMAP-Server als abonniert. Viele E-Mail-Clients unterscheiden zwischen allen vorhandenen Postfächern und den abonnierten Postfächern – letztere sind die, die der Benutzer aktiv in seiner Ordnerliste sieht. Mit dieser Funktion kann ein PHP-Skript programmatisch eine Mailbox in diese Liste aufnehmen.

Das Abonnement wird serverseitig gespeichert und ist damit benutzerspezifisch. Es wird kein Postfach erstellt – das Postfach muss bereits existieren. Um ein Postfach neu anzulegen, verwendet man stattdessen imap_createmailbox.

Der Gegenstück-Befehl zum Entfernen eines Abonnements ist imap_unsubscribe. Mit imap_list bzw. imap_lsub lassen sich alle bzw. nur die abonnierten Postfächer auflisten.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindungsinstanz, die zuvor mit imap_open geöffnet wurde.
$mailbox Pflicht string Der vollständige Name der zu abonnierenden Mailbox im Format {imap.example.com}Ordnername. Der Serverteil muss mit dem der geöffneten Verbindung übereinstimmen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Abonnement erfolgreich eingetragen wurde, andernfalls false. Im Fehlerfall kann imap_last_error den genauen Fehlertext liefern.

Beispiele

Postfach abonnieren

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

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

$mailbox = '{imap.example.com:993/imap/ssl}Projekte';

if (imap_subscribe($imap, $mailbox)) {
    echo 'Postfach erfolgreich abonniert.';
} else {
    echo 'Fehler beim Abonnieren: ' . imap_last_error();
}

imap_close($imap);
Postfach erfolgreich abonniert.

Mehrere Postfächer abonnieren und abonnierten Liste ausgeben

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

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

$ordner = ['Projekte', 'Archiv', 'Newsletter'];

foreach ($ordner as $name) {
    $mailbox = $server . $name;
    if (imap_subscribe($imap, $mailbox)) {
        echo "Abonniert: $name\n";
    } else {
        echo "Fehler bei: $name – " . imap_last_error() . "\n";
    }
}

// Abonnierte Postfächer auflisten
$abonniert = imap_lsub($imap, $server, '*');
if ($abonniert) {
    echo "\nAbonnierte Postfächer:\n";
    foreach ($abonniert as $mb) {
        echo '  ' . $mb . "\n";
    }
}

imap_close($imap);
Abonniert: Projekte Abonniert: Archiv Abonniert: Newsletter Abonnierte Postfächer: {imap.example.com:993/imap/ssl}INBOX {imap.example.com:993/imap/ssl}Projekte {imap.example.com:993/imap/ssl}Archiv {imap.example.com:993/imap/ssl}Newsletter

// Wichtig · Fallstricke

IMAP-Extension: Ab PHP 8.1 gibt imap_open ein IMAP\Connection-Objekt zurück (vorher war es eine resource). Die Funktion imap_subscribe erwartet entsprechend den neuen Typ.

Postfach muss existieren: Wenn das angegebene Postfach auf dem Server nicht vorhanden ist, schlägt der Aufruf fehl. Zunächst mit imap_createmailbox anlegen, dann abonnieren.

Serverseitiges Feature: Nicht alle IMAP-Server implementieren das Abonnement-Konzept gleich. Manche ignorieren Abonnements vollständig und zeigen immer alle Ordner an.

Deprecation: Die gesamte imap_*-Erweiterung wurde in PHP 8.4 als deprecated markiert. Für neue Projekte sollten externe Bibliotheken wie ddeboer/imap oder Webklex/php-imap in Betracht gezogen werden.