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