Start · Sprachen · PHP · Referenz · imap_unsubscribe

imap_unsubscribe

Funktion

Beendet das Abonnement eines Postfachs (Mailbox) auf dem IMAP-Server für die aktuelle Verbindung.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

imap_unsubscribe() entfernt ein zuvor abonniertes Postfach aus der Abonnement-Liste des IMAP-Servers. Die Funktion ist das Gegenstück zu imap_subscribe() und ermöglicht es, ein Postfach aus der Auflistung der abonnierten Ordner zu entfernen, ohne es physisch zu löschen.

Abonnierte Postfächer werden üblicherweise von IMAP-Clients als bevorzugte Ansicht genutzt – nur abonnierte Ordner erscheinen standardmäßig in der Ordnerliste des Clients. Mit imap_unsubscribe() kann ein Ordner aus dieser Liste entfernt werden, sodass er in normalen Ordnerauflistungen nicht mehr erscheint.

Der Postfach-Name muss im vollständigen IMAP-Format angegeben werden, also inklusive Server-Spezifikation (z. B. {imap.example.com}INBOX.Gesendet). Dies entspricht dem Format, das auch bei imap_open() oder imap_subscribe() verwendet wird.

Die Funktion ist besonders nützlich in E-Mail-Clients oder -Verwaltungstools, bei denen Benutzer ihre Ordneransicht anpassen können – etwa bei der Synchronisation von Postfach-Abonnements über mehrere Clients hinweg.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine gültige IMAP-Verbindungsinstanz, die zuvor mit imap_open() geöffnet wurde.
$mailbox Pflicht string Der vollständige Name des Postfachs im IMAP-Format, dessen Abonnement beendet werden soll. Beispiel: {imap.example.com}INBOX.Archiv.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Abonnement erfolgreich beendet wurde, andernfalls false.

Beispiele

Abonnement eines Ordners beenden

<?php
// Verbindung zum IMAP-Server öffnen
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'benutzer@example.com', 'geheimesPasswort');

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

// Abonnement des Archiv-Ordners beenden
$mailbox = '{imap.example.com:993/imap/ssl}INBOX.Archiv';
$result = imap_unsubscribe($imap, $mailbox);

if ($result) {
    echo "Das Abonnement für '{$mailbox}' wurde erfolgreich beendet.";
} else {
    echo 'Fehler beim Beenden des Abonnements: ' . imap_last_error();
}

imap_close($imap);
Das Abonnement für '{imap.example.com:993/imap/ssl}INBOX.Archiv' wurde erfolgreich beendet.

Mehrere Ordner-Abonnements beenden

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

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

// Liste der Ordner, deren Abonnement beendet werden soll
$ordnerListe = ['INBOX.Newsletter', 'INBOX.Werbung', 'INBOX.Archiv.Alt'];

foreach ($ordnerListe as $ordner) {
    $mailbox = $server . $ordner;
    if (imap_unsubscribe($imap, $mailbox)) {
        echo "Abonnement beendet: {$ordner}\n";
    } else {
        echo "Fehler bei: {$ordner} – " . imap_last_error() . "\n";
    }
}

imap_close($imap);
Abonnement beendet: INBOX.Newsletter Abonnement beendet: INBOX.Werbung Abonnement beendet: INBOX.Archiv.Alt

// Wichtig · Fallstricke

Versionshinweis: Ab PHP 8.1.0 gibt imap_open() ein IMAP\Connection-Objekt zurück (statt einer Ressource). Der Parameter $imap erwartet entsprechend diesen neuen Typ.

Postfach-Format: Der Postfachname muss exakt dem Format entsprechen, das der IMAP-Server erwartet, inklusive der Server-Spezifikation in geschweiften Klammern. Fehler im Format führen zu einem Fehlschlag ohne aussagekräftige Fehlermeldung – mit imap_last_error() lässt sich der letzte IMAP-Fehler abfragen.

Keine physische Löschung: imap_unsubscribe() löscht den Ordner nicht. Es wird lediglich der Abonnement-Status geändert. Der Ordner bleibt auf dem Server erhalten und kann mit imap_list() weiterhin gefunden werden.