Forum Doku Wiki Blog

Forumsarchiv 2007, November
Mal wieder: Umlaute und ß in Mail-Funktion

archivierte Beiträge lesen

  1. (PHP) Mal wieder: Umlaute und ß in Mail-Funktion von Rene, 17. 11. 2007, 13:17

Mal wieder: Umlaute und ß in Mail-Funktion

Der folgende Beitrag wurde am 17. 11. 2007, 13:17 Uhr von Rene veröffentlicht.

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?


Mal wieder: Umlaute und ß in Mail-Funktion

Der folgende Beitrag wurde am 17. 11. 2007, 13:33 Uhr von Matze veröffentlicht.

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

Mal wieder: Umlaute und ß in Mail-Funktion

Der folgende Beitrag wurde am 17. 11. 2007, 13:34 Uhr von Matze veröffentlicht.

Hallo,

sorry, ich hatte den Satz "Ebenfalls habe ich UTF-8 ausprobiert..." überlesen.

Grüße, Matze

Mal wieder: Umlaute und ß in Mail-Funktion

Der folgende Beitrag wurde am 17. 11. 2007, 13:49 Uhr von Tom veröffentlicht.

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
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


Mal wieder: Umlaute und ß in Mail-Funktion

Der folgende Beitrag wurde am 17. 11. 2007, 14:55 Uhr von Rene veröffentlicht.

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!

Abschlusszeichen von Header-Zeilen

Der folgende Beitrag wurde am 17. 11. 2007, 15:36 Uhr von Tom veröffentlicht.

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
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


Abschlusszeichen von Header-Zeilen

Der folgende Beitrag wurde am 17. 11. 2007, 16:30 Uhr von dedlfix veröffentlicht.

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";

Abschlusszeichen von Header-Zeilen

Der folgende Beitrag wurde am 17. 11. 2007, 19:29 Uhr von Tom veröffentlicht.

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
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)


© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4