Signatur
Beschreibung
iconv_mime_encode() erzeugt ein vollständiges MIME-Header-Feld im Format Feldname: kodierter Feldwert. Die Funktion übernimmt dabei automatisch die Zeichenkodierung des Feldwerts nach RFC 2047, sodass Nicht-ASCII-Zeichen (z. B. Umlaute oder japanische Zeichen) sicher in E-Mail-Headern übertragen werden können.
Über das optionale Array $options lässt sich das Verhalten fein steuern: Eingabe- und Ausgabe-Zeichensatz, das Kodierungsschema (B für Base64 oder Q für Quoted-Printable) sowie die maximale Zeilenlänge sind einstellbar. Die Funktion bricht lange Header-Werte automatisch in mehrere Zeilen um (Header-Folding), wie es der MIME-Standard vorschreibt.
Typische Anwendungsfälle sind das Erstellen von E-Mail-Headern wie Subject, From oder To, wenn diese Nicht-ASCII-Zeichen enthalten. In Kombination mit mail() oder einer E-Mail-Bibliothek sorgt die Funktion für standardkonforme und kompatible Nachrichten.
Ist die iconv-Erweiterung nicht verfügbar oder schlägt die Konvertierung fehl, gibt die Funktion false zurück.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $field_name Pflicht | string | Name des MIME-Header-Felds, z. B. Subject oder From. Darf nur ASCII-Zeichen enthalten. |
|
| $field_value Pflicht | string | Wert des Header-Felds. Darf Nicht-ASCII-Zeichen enthalten, die dann gemäß RFC 2047 kodiert werden. | |
| $options | array | [] | Assoziatives Array mit optionalen Einstellungen:
|
Rückgabewert
Subject: =?UTF-8?B?...?=. Bei einem Fehler (z. B. ungültiger Zeichensatz oder nicht verfügbare iconv-Erweiterung) wird false zurückgegeben.Beispiele
E-Mail-Betreff mit Umlauten korrekt kodieren
<?php
$subject = iconv_mime_encode('Subject', 'Bestellung bestätigt: Müller & Söhne', [
'scheme' => 'B',
'input-charset' => 'UTF-8',
'output-charset' => 'UTF-8',
'line-length' => 76,
'line-break-chars' => "\r\n",
]);
if ($subject === false) {
echo 'Fehler bei der MIME-Kodierung.';
} else {
echo $subject;
}
Quoted-Printable-Kodierung und langer Headertext mit Zeilenumbruch
<?php
$from = iconv_mime_encode('From', 'Günter Großmann <guenter@example.com>', [
'scheme' => 'Q',
'input-charset' => 'UTF-8',
'output-charset' => 'UTF-8',
'line-length' => 60,
'line-break-chars' => "\r\n",
]);
echo $from;
// Verwendung mit mail()
$to = 'empfaenger@example.com';
$subject = iconv_mime_encode('Subject', 'Angebotänderung für März', [
'scheme' => 'B',
'input-charset' => 'UTF-8',
'output-charset'=> 'UTF-8',
]);
// Nur den Wert-Teil nach dem Doppelpunkt-Leerzeichen übergeben
$subjectValue = substr($subject, strlen('Subject: '));
mail($to, $subjectValue, 'Nachrichtentext...');
// Wichtig · Fallstricke
Zeichensatz-Konsistenz: Stellen Sie sicher, dass der in input-charset angegebene Zeichensatz tatsächlich dem Zeichensatz des übergebenen Strings entspricht. Falsche Angaben führen zu verstümmelten Headerfeldern.
Nur der Feldwert für mail(): Die PHP-Funktion mail() erwartet im Parameter $subject nur den reinen Wert ohne den vorangestellten Feldnamen (Subject: ). Schneiden Sie diesen Teil vor der Übergabe ab, wie im Beispiel gezeigt.
Abhängigkeit: Die Funktion ist Teil der iconv-Erweiterung, die auf den meisten Systemen standardmäßig aktiviert ist, aber mit extension_loaded('iconv') geprüft werden kann.
Moderne Alternativen: Für komplexe E-Mail-Verarbeitung empfehlen sich Bibliotheken wie Symfony Mailer oder PHPMailer, die MIME-Kodierung intern korrekt handhaben.