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