Start · Sprachen · PHP · Referenz · imap_renamemailbox

imap_renamemailbox

Funktion

Benennt ein IMAP-Postfach (Mailbox) um oder verschiebt es innerhalb des Mailservers.

seit PHP 4.0.0 Kategorie: http

Signatur

imap_renamemailbox(IMAP\Connection $imap, string $from, string $to): bool

Beschreibung

imap_renamemailbox() ermöglicht das Umbenennen oder Verschieben eines Postfachs auf einem IMAP-Server. Der Quell- und Zielpfad werden als vollständige IMAP-Postfachbezeichnungen angegeben, also inklusive des Serverbezeichners in geschweiften Klammern, z. B. {imap.example.com}INBOX.Altordner.

Die Funktion wird typischerweise eingesetzt, um Unterordner in einer Mailbox-Struktur zu reorganisieren, beispielsweise beim Umbenennen von Archivordnern oder beim Verschieben von Unterpostfächern in andere Ordnerhierarchien. Sowohl der Quell- als auch der Zielpfad müssen denselben IMAP-Server referenzieren, da serverübergreifende Umbenennungen nicht unterstützt werden.

Zu beachten ist, dass einige IMAP-Server das Umbenennen des INBOX-Postfachs nicht erlauben und in diesem Fall einen Fehler zurückgeben. Es empfiehlt sich daher, den Rückgabewert stets zu prüfen und mögliche Fehler mit imap_last_error() auszuwerten.

Ab PHP 8.1 ist der erste Parameter ein IMAP\Connection-Objekt; in früheren Versionen war es eine Ressource vom Typ resource.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindung, die zuvor mit imap_open() geöffnet wurde.
$from Pflicht string Der vollständige IMAP-Pfad des Quellpostfachs, z. B. {imap.example.com}INBOX.AlterName.
$to Pflicht string Der vollständige IMAP-Pfad des Zielpostfachs (neuer Name), z. B. {imap.example.com}INBOX.NeuerName.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Umbenennen erfolgreich war, andernfalls false. Im Fehlerfall kann imap_last_error() zur Fehlerdiagnose verwendet werden.

Beispiele

Einen IMAP-Unterordner umbenennen

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

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

$server = '{imap.example.com:993/imap/ssl}';
$alterName = $server . 'INBOX.Archiv2022';
$neuerName = $server . 'INBOX.Archiv_2022';

if (imap_renamemailbox($imap, $alterName, $neuerName)) {
    echo 'Postfach erfolgreich umbenannt.';
} else {
    echo 'Fehler beim Umbenennen: ' . imap_last_error();
}

imap_close($imap);
Postfach erfolgreich umbenannt.

Ordner in eine andere Hierarchieebene verschieben

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

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

// Ordner 'INBOX.Temp.Wichtig' nach 'INBOX.Wichtig' verschieben
$quelle = $server . 'INBOX.Temp.Wichtig';
$ziel   = $server . 'INBOX.Wichtig';

if (imap_renamemailbox($imap, $quelle, $ziel)) {
    echo "Ordner erfolgreich verschoben.\n";
} else {
    echo "Fehler: " . imap_last_error() . "\n";
}

imap_close($imap);
Ordner erfolgreich verschoben.

// Wichtig · Fallstricke

Sicherheitshinweis: Werden Postfachpfade aus Benutzereingaben zusammengesetzt, muss eine sorgfältige Validierung und Bereinigung erfolgen, um Path-Traversal-Angriffe auf die Mailbox-Struktur zu verhindern. Nutzer könnten sonst versuchen, Systemordner umzubenennen oder auf unerlaubte Verzeichnisse zuzugreifen.

Kompatibilität: Ab PHP 8.1 erwartet die Funktion als ersten Parameter ein IMAP\Connection-Objekt statt einer resource. Älterer Code, der das Ergebnis von imap_open() als Ressource behandelt, muss ggf. angepasst werden.

INBOX: Das Umbenennen der INBOX selbst wird von den meisten IMAP-Servern abgelehnt. Nur Unterordner können zuverlässig umbenannt werden.

Die IMAP-Erweiterung ist standardmäßig nicht in PHP enthalten und muss bei der Kompilierung oder über eine Paketverwaltung aktiviert werden (php-imap).