Start · Sprachen · PHP · Referenz · imap_createmailbox

imap_createmailbox

Funktion

Legt ein neues Postfach (Mailbox/Ordner) auf einem IMAP-Server an.

seit PHP 4.0.0 Kategorie: http

Signatur

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

Beschreibung

imap_createmailbox() erstellt auf dem über $imap verbundenen Mail-Server einen neuen Ordner (Mailbox). Die Funktion wird typischerweise eingesetzt, um Unterordner für Benutzer oder automatisierte Ablage-Systeme anzulegen, z. B. INBOX.Archiv oder INBOX.Spam.

Der Mailbox-Name muss als vollständiger IMAP-Mailbox-String übergeben werden, d. h. inklusive des Server-Präfixes in geschweiften Klammern, wie es auch imap_open() erwartet. Beispiel: {mail.example.com}INBOX.NeuerOrdner. Der Trennzeichen zwischen Hierarchieebenen ist server-abhängig – häufig ein Punkt (.) oder Schrägstrich (/).

Soll ein verschachtelter Ordner angelegt werden, muss der übergeordnete Ordner bereits existieren, sofern der Server keine automatische Zwischenerstellung unterstützt. Fehler können über imap_last_error() abgefragt werden.

Ab PHP 8.1.0 ist die IMAP-Erweiterung als deprecated markiert und soll in einer zukünftigen PHP-Version entfernt werden. Als Alternative wird empfohlen, eine externe Bibliothek wie ddeboer/imap zu verwenden.

Parameter

Name Typ Default Beschreibung
$imap Pflicht IMAP\Connection Eine aktive IMAP-Verbindung, die zuvor mit imap_open() geöffnet wurde.
$mailbox Pflicht string Der vollständige IMAP-Mailbox-Name einschließlich Server-Präfix in geschweiften Klammern, z. B. {mail.example.com}INBOX.NeuerOrdner. Der Name muss korrekt kodiert sein (UTF-7 modifiziert für Nicht-ASCII-Zeichen).

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Mailbox erfolgreich erstellt wurde, andernfalls false. Im Fehlerfall liefert imap_last_error() eine beschreibende Fehlermeldung.

Beispiele

Neuen Unterordner in der INBOX erstellen

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

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

// Neuen Ordner "Archiv" unterhalb der INBOX anlegen
$neuerOrdner = '{mail.example.com:993/imap/ssl}INBOX.Archiv';

if (imap_createmailbox($imap, $neuerOrdner)) {
    echo 'Ordner erfolgreich erstellt.';
} else {
    echo 'Fehler beim Erstellen: ' . imap_last_error();
}

imap_close($imap);
?>
Ordner erfolgreich erstellt.

Mehrere Unterordner für einen neuen Benutzer anlegen

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

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

// Standard-Ordnerstruktur für einen Benutzer anlegen
$ordner = ['Gesendet', 'Entwürfe', 'Papierkorb', 'Spam'];

foreach ($ordner as $name) {
    // Nicht-ASCII-Zeichen (wie Umlaute) müssen UTF-7 kodiert werden
    $mailboxName = $server . 'INBOX.' . mb_convert_encoding($name, 'UTF7-IMAP', 'UTF-8');
    if (imap_createmailbox($imap, $mailboxName)) {
        echo "Ordner '{$name}' erstellt.\n";
    } else {
        echo "Fehler bei Ordner '{$name}': " . imap_last_error() . "\n";
    }
}

imap_close($imap);
?>
Ordner 'Gesendet' erstellt. Ordner 'Entw&#252;rfe' erstellt. Ordner 'Papierkorb' erstellt. Ordner 'Spam' erstellt.

// Wichtig · Fallstricke

Deprecated ab PHP 8.1.0: Die gesamte IMAP-Erweiterung wurde als veraltet markiert. Es wird empfohlen, auf eine IMAP-Bibliothek wie ddeboer/imap oder symfony/mailer umzusteigen.

Zeichenkodierung: Mailbox-Namen müssen für Nicht-ASCII-Zeichen (z. B. Umlaute) in modifiziertes UTF-7 (RFC 2060) kodiert werden. Dies kann mit mb_convert_encoding($name, 'UTF7-IMAP', 'UTF-8') erfolgen.

Hierarchietrenner: Der Trenner zwischen Ordnerebenen ist serverabhängig. Viele Server verwenden einen Punkt (.), andere einen Schrägstrich (/). Mit imap_getmailboxes() und dem Attribut delimiter lässt sich der korrekte Trenner ermitteln.

Berechtigungen: Zum Anlegen von Mailboxes sind ausreichende Serverrechte erforderlich. Fehlende Rechte führen zu false als Rückgabewert.