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