Signatur
Beschreibung
imap_utf8_to_mutf7() konvertiert einen UTF-8-kodierten String in das modifizierte UTF-7-Format (auch Modified UTF-7 oder mUTF-7 genannt), das in RFC 2060 definiert ist. IMAP-Server verwenden dieses Format intern zur Darstellung von Postfachnamen (Mailbox-Namen), die Nicht-ASCII-Zeichen enthalten, z. B. Umlaute oder andere internationale Schriftzeichen.
Das modifizierte UTF-7 unterscheidet sich vom Standard-UTF-7: Nicht-ASCII-Zeichenfolgen werden mit & eingeleitet und mit - abgeschlossen, wobei der Inhalt Base64-kodiert ist. ASCII-Zeichen werden direkt übernommen. Dieses Verfahren ermöglicht es, IMAP-Ordnernamen zuverlässig zu übertragen, ohne dass es zu Problemen mit Zeichencodierungen auf dem Transportweg kommt.
Diese Funktion ist typischerweise dann sinnvoll, wenn man Ordnernamen auf einem IMAP-Server erstellen, umbenennen oder referenzieren möchte, die Sonderzeichen enthalten – etwa Gesendet, Gelöscht oder Ordner in fernöstlichen Schriftzeichen. Vor dem Senden des Ordnernamens an den IMAP-Server muss dieser korrekt kodiert sein.
Die umgekehrte Operation, also die Konvertierung von mUTF-7 zurück in UTF-8, übernimmt imap_mutf7_to_utf8().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der UTF-8-kodierte Eingabe-String, der in modifiziertes UTF-7 umgewandelt werden soll, z. B. ein IMAP-Ordnername mit Umlauten oder anderen Sonderzeichen. |
Rückgabewert
false zurückgegeben.Beispiele
Ordnername mit Umlaut kodieren
<?php
$ordner = 'Gelöscht';
$mutf7 = imap_utf8_to_mutf7($ordner);
if ($mutf7 !== false) {
echo 'mUTF-7: ' . $mutf7 . PHP_EOL;
} else {
echo 'Kodierung fehlgeschlagen.' . PHP_EOL;
}
IMAP-Verbindung: Ordner mit Sonderzeichen anlegen
<?php
// IMAP-Verbindung herstellen
$imap = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'user@example.com', 'geheim');
if ($imap) {
// Ordnername in mUTF-7 kodieren, bevor er an den Server gesendet wird
$ordnerName = 'Spëcial Földer';
$kodiert = imap_utf8_to_mutf7($ordnerName);
if ($kodiert !== false) {
$ergebnis = imap_createmailbox($imap, '{imap.example.com:993}' . $kodiert);
echo $ergebnis ? 'Ordner erfolgreich erstellt.' : 'Fehler beim Erstellen.';
} else {
echo 'Kodierung fehlgeschlagen.';
}
imap_close($imap);
}
Hin- und Rückkonvertierung prüfen
<?php
$original = 'Frühlingsbriefe';
$mutf7 = imap_utf8_to_mutf7($original);
$zurueck = imap_mutf7_to_utf8($mutf7);
echo 'Original : ' . $original . PHP_EOL;
echo 'mUTF-7 : ' . $mutf7 . PHP_EOL;
echo 'Zurück : ' . $zurueck . PHP_EOL;
echo 'Identisch: ' . ($original === $zurueck ? 'ja' : 'nein') . PHP_EOL;
// Wichtig · Fallstricke
Verfügbarkeit: imap_utf8_to_mutf7() wurde mit PHP 8.3.0 als eigenständige Funktion eingeführt und benötigt die IMAP-Erweiterung (ext/imap). In älteren PHP-Versionen stand diese Konvertierung nicht als separate Funktion zur Verfügung.
Eingabekodierung: Die Eingabe muss gültiges UTF-8 sein. Wird ein String in einer anderen Kodierung übergeben (z. B. ISO-8859-1), kann das Ergebnis falsch oder false sein. Ggf. vorher mit mb_convert_encoding() konvertieren.
Nur für Mailbox-Namen: mUTF-7 ist ausschließlich für IMAP-Ordnernamen gedacht. Für E-Mail-Header-Felder (z. B. Betreff) wird stattdessen RFC 2047 (encoded-words) verwendet, hierfür sind andere Funktionen wie imap_utf8() zuständig.