Mal wieder: Umlaute und ß in Mail-Funktion
Rene
- php
Hi,
ich sitze schon etliche Stunden vor meinem Problem. Ich habe gegockelt und etliche Foren durchforstet, vieles ausprobiert, aber keine Lösung gefunden.
Folgendes:
Ich habe eine Datei "kontakt.htm" mit der META-Angabe <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">. In diese Datei bette ich in den <body> per require ein Kontaktformular ein:
require("../kontaktformular.php");
Das Kontaktformular ruft nach dem Submit die Datei "kontaktformularauswertung.php" auf
<form action="../kontaktformularauswertung.php" method="post">
Die Datei "kontaktformularauswertung.php" hat ebenfalls die META-Angabe <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">. Im <body> dieser Datei wird eine Mail-Funktion ausgeführt, um die Anfrage an eine Mail-Adresse zu versenden
mail($email, $subject, $content, $header);
In der versendeten Mail wird der Betreff $subject korrekt angezeigt. Der Mailbody $content zeigt statt der Umlaute und des Buchstabens ß Fragezeichen an.
Folgende Header habe ich bereits ausprobiert:
$header = "From: $visitor_email\nContent-Type: text/plain;\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
$header = "From: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
$header = "From: $visitor_email\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
header = "From: $visitor_email\nReply-To: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nX-Mailer: PHP/" . phpversion();
$header = "Mime-Version: 1.0\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n";
$header = "Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable";
Ebenfalls habe ich UTF-8 ausprobiert, mit entsprechenden Headern für die Mail-Funktion und die META-Angabe in der Datei "kontaktformularauswertung.php".
Die per POST übergebenen Daten lasse ich mir in einem unsichtbaren (nur HIDDEN-Felder) Formular im <body> der Datei "kontaktformularauswertung.php" ausgeben. Dort werden die Umlaute und das ß korrekt im Quelltext angezeigt.
Mein Mailprogramm "Thunderbird" ist auf "Westlich (ISO-8859-1)" eingestellt.
Welcher Header verursacht mir nur soviel headache?
Hallo,
überleg doch mal daran in welcher Form iso-8859-1 Vokale und Sonderzeichen kodiert. Danach in welcher Form es utf8 tut.
Wenn du alles auf Kyrilisch stellen würdest, würdest du dich doch auch nicht wundern wenn keine latainischen Buchstaben ausgegeben werden oder?
Grüße, Matze
Hallo,
sorry, ich hatte den Satz "Ebenfalls habe ich UTF-8 ausprobiert..." überlesen.
Grüße, Matze
Hello,
Folgende Header habe ich bereits ausprobiert:
$header = "From: $visitor_email\nContent-Type: text/plain;\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();$header = "From: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
$header = "From: $visitor_email\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
header = "From: $visitor_email\nReply-To: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nX-Mailer: PHP/" . phpversion();
$header = "Mime-Version: 1.0\r\nContent-Type: text/plain; charset=ISO-8859-1\r\n";
Wieso nun hier plötzlich "\r\n"?
Sas wäre bei ALLEN Headern richtig!
$header = "Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable";
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Ich Idiot! Vor lauter Testerei habe ich übersehen, dass ich sämtliche POST-Variablem mit utf8_decode umgewandelt habe.
Mit folgendem Header funktioniert es jetzt:
$header = "From: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: 8bit\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
Danke für Eure Hilfe!
Hello,
Ich Idiot! Vor lauter Testerei habe ich übersehen, dass ich sämtliche POST-Variablem mit utf8_decode umgewandelt habe.
Mit folgendem Header funktioniert es jetzt:
$header = "From: $visitor_email\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: 8bit\nReply-To: $visitor_email\nX-Mailer: PHP/" . phpversion();
Denke aber trotzdem an den Abschluss jeder Headerzeile mit "\r\n"
Das ist vorgeschrieben und manche MTA's nehmen das auch sehr ernst.
Du weißt ja nie, wieviele Stationen Deine Mail durchlaufen muss.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
echo $begrüßung;
Denke aber trotzdem an den Abschluss jeder Headerzeile mit "\r\n"
Das ist vorgeschrieben und manche MTA's nehmen das auch sehr ernst.
Dieses Strengdraufachten kann man sich im Prinzip schenken, denn PHP macht es intern wieder zunichte, weil es da einfach \n beim Zusammenbau von To, Subject, den zusätzlichen Headerzeilen und dem Mail-Body verwendet. Siehe http://cvs.php.net/viewvc.cgi/php-src/ext/standard/mail.c?annotate=1.96 - Zeile 235ff. (Dass \n hier wirklich nur für das Linefeed steht, kann man weiter oben in Zeile 48 sehen, denn da wird es ebenfalls und zusammen mit dem \r verwendet. An der Stelle wäre es nicht sehr sinnig, wenn \n für CRLF stünde.)
Nähme PHP im Code der mail()-Funktion \r\n zum Zusammenbau, wäre das auch kontraproduktiv zur Handbuchempfehlung "If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used)."
Möchte man also unter allen Umständen stets \r\n verwenden, muss man To und Subject auf \r enden lassen und den letzten Zusatzheader (oder das Subject, wenn man keine verwendet) mit \r\n\r abschließen. Somit hat man dann zumindest ein \r\n\r\n\n als Trenner. Wie sich allerdings das zusätzliche \n auf die MTAs auswirkt weiß ich nicht. Vermutlich erzeugt das nur eine Leerzeile am Anfang des Mailtexts.
echo "$verabschiedung $name";
Hello,
Dieses Strengdraufachten kann man sich im Prinzip schenken, denn PHP macht es intern wieder zunichte, weil es da einfach \n beim Zusammenbau von To, Subject, den zusätzlichen Headerzeilen und dem Mail-Body verwendet. Siehe http://cvs.php.net/viewvc.cgi/php-src/ext/standard/mail.c?annotate=1.96 - Zeile 235ff.
Die Beschreibung ist mir neu.
Das erklärt aber einige Probleme, die ich hier noch auf dem Stapel habe "zur gelegentlichen Untersuchung" ...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom