Umlaute in PHP mail()
ChrisS
- php
Hallo zusammen,
hoffe ihr könnt mir helfen, habe ein Formular, das soweit funktioniert, aber leider werden Umlaute falsch ausgegeben (bzw. in der gesendeten Mail falsch dargestellt: Ü = uuml,..)
Hab schon einiges probiert mit charset etc., aber hat leider nicht geholfen.
Vielleicht könnt ihr ja mal einen Blick drauf werfen.
Danke schon mal:
$ziel_addr = "xxx@xxx.de";
$mailheader = "FROM: Bestellung <".$ziel_addr.">"
."Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$mailbetreff = "Neue Bestellung \n";
$mailtext .= "Bestellung: ".$daten."\n";
$mailtext .= "Preis: ".$preis."\n";
$mailtext .= "Anzahl: ".$stueckzahl."\n";
$senden = @mail($ziel_addr,$mailbetreff,$mailtext,$mailheader);
HTML Doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
Danke schon mal für die Hilfe und viele Grüße
ChrisS
$ziel_addr = "xxx@xxx.de";
$mailheader = "FROM: Bestellung <".$ziel_addr.">"
."Content-Type: text/plain; charset="iso-8859-1"\n";
$mailbetreff = "Neue Bestellung \n";
$mailtext .= "Bestellung: ".$daten."\n";
$mailtext .= "Preis: ".$preis."\n";
$mailtext .= "Anzahl: ".$stueckzahl."\n";$senden = @mail($ziel_addr,$mailbetreff,$mailtext,$mailheader);
Versuch's mal mit `$senden = @mail($ziel_addr,$mailbetreff,utf8_encode($mailtext),$mailheader);`{:.language-php}
Versuch's mal mit
$senden = @mail($ziel_addr,$mailbetreff,utf8_encode($mailtext),$mailheader);
Hi erstmal,
danke für die Antwort, das hab ich schon probiert, klappt aber leider auch nicht.
Hängt das viell. irgendwie mit dem hier zusammen:
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
Hängt das viell. irgendwie mit dem hier zusammen:
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
Ja, hallo erstmal
Das könnte sein. Hab auch einen Frommailer. Die Codierung im HTML-dokument ist bei mir allerdings UTF-8. Bei der Funktion mail() in der PHP-Datei verwende ich dann, wie schon geschrieben, utf8_encode() für den Mailtext. Und das funktioniert - inkl. der Umlaute - tadellos!
Gruss
Die Codierung im HTML-dokument ist bei mir allerdings UTF-8. Bei der Funktion
mail()in der PHP-Datei verwende ich dann, wie schon geschrieben,utf8_encode()für den Mailtext. Und das funktioniert - inkl. der Umlaute - tadellos!
Ja auch das hab ich mal umgestellt, aber leider gleiches Ergebnis :(
Ich verzweifel langsam...

Du musst folgendes auf UTF-8 stellen:
Und der Mailclient muss die Mail als UTF-8 darstellen können

Hi!
Du musst folgendes auf UTF-8 stellen:
Muss er nicht, denn obwohl es sinnvoll sein kann, UTF-8 zu verwenden, ändert das an seinem Problem überhaupt nichts. (Nicht nur, weil Der Martin schon die richtige Lösungsrichtung gewiesen hat, sondern weil gar nicht von den typischen UTF-8-Zeichen die Rede war sondern eben von HTML-Entitys.)
- HTML Form
Dafür interessiert sich kaum ein Browser (wenn du das accepted-charset-Attribut meinst).
Von einem Formular war auch gar nicht die Rede. Außerdem gibt es noch weitere Stellen, die bei einer UTF-8-Umstellung beachtet werden müssten.
- Script IN UTF-8 am Besten speichern, danns schaltet PHP sich in den UTF-8 mode
Derzeit aktuelle Versionen von PHP kennen keinen UTF-8-Mode.
Lo!
@@ChrisS:
nuqneH
Hängt das viell. irgendwie mit dem hier zusammen:
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1" />
Dann schon eher damit:
$mailheader = "FROM: Bestellung <".$ziel_addr.">"
."Content-Type: text/plain; charset=\"iso-8859-1\"\n";
Wenn du die Mails UTF-8-codiert rausschickt, solltest du das auch angeben.
Qapla'
Wenn du die Mails UTF-8-codiert rausschickt, solltest du das auch angeben.
Servus,
hab ich auch mal geändert, klappt leider immer noch nicht.
Andres gefragt: Was wären denn die richtigen Angaben, damit das funzt?
Greets
Hallo,
hoffe ihr könnt mir helfen, habe ein Formular, das soweit funktioniert, aber leider werden Umlaute falsch ausgegeben (bzw. in der gesendeten Mail falsch dargestellt: Ü = uuml,..)
dann werden sie schon so codiert an mail() übergeben.
$ziel_addr = "xxx@xxx.de";
$mailheader = "FROM: Bestellung <".$ziel_addr.">"
."Content-Type: text/plain; charset="iso-8859-1"\n";
$mailbetreff = "Neue Bestellung \n";
$mailtext .= "Bestellung: ".$daten."\n";
$mailtext .= "Preis: ".$preis."\n";
$mailtext .= "Anzahl: ".$stueckzahl."\n";$senden = @mail($ziel_addr,$mailbetreff,$mailtext,$mailheader);
In diesem Codeauszug ist jedenfalls nichts, was Umlaute zu Entity-Referenzen verstümmelt. Also müssen diese Entity-Referenzen schon in den Variablen $daten, $preis oder $stueckzahl stehen, aus denen der Mailtext zusammengesetzt wird. Untersuche deren Inhalte.
Wo kommen diese Daten her? Da müsste man ansetzen.
So long,
Martin
--
Wenn der Computer wirklich alles kann,
dann kann er mich mal kreuzweise.
In diesem Codeauszug ist jedenfalls nichts, was Umlaute zu Entity-Referenzen verstümmelt. Also müssen diese Entity-Referenzen schon in den Variablen $daten, $preis oder $stueckzahl stehen, aus denen der Mailtext zusammengesetzt wird. Untersuche deren Inhalte.
Wo kommen diese Daten her? Da müsste man ansetzen.
Servus Martin:
Danke, du hast mich auf die richtige Spur gebracht:
Folgender Schnipsel hat sich noch verirrt:
$wert = htmlentities($wert, ENT_QUOTES); // umwandeln von Anführungszeichen
das habe ich entfernt, nun funktioniert es :)
Danke euch allen.
Viele Grüße
ChrisS
Hi,
aber leider werden Umlaute falsch ausgegeben (bzw. in der gesendeten Mail falsch dargestellt: Ü = uuml,..)
ja werden sie nun falsch codiert dargestellt, oder siehst Du lediglich html entities?
Grüsse, Jo