Kontaktformular und Umlaute

Hallo,

ich bin php DAU und brauche bitte mal Hilfe zum Thema Kontaktformulardaten per php versenden.

Senden klappt schon ganz prima, nur kommen die Umlaute kryptisch an.

Die Kodierung ist uft-8 im Formular und iso-8859-1 im (abgeschribenenm) Skript. Ich habe aber auch schon versucht beides per iso oder uft-8 zu senden, mit dem gleichen Ergebnis.

Jemand eine Idee?

Schonmal vielen Dank vorab und
Grüße
Angela

Hier das Skript

<?php $empfaenger = "[email protected]";
$betreff = "xxx"; $mailbody = "Folgende Daten wurden im Kontaktformular eingegeben:\n\n"; foreach($\_POST as $name =\> $value) { $mailbody .= "$name = $value\n"; // Kurzform für Verkettung $mailbody = stripslashes($mailbody); } $muster = "/^[a-zA-Z0-9-\_.]+@[a-zA-Z0-9-\_.]+\.[a-zA-Z]{2,4}$/"; if (!empty($\_POST['Email']) && preg\_match($muster, $\_POST['Email']) \> 0) { $absender = $\_POST['Email']; if (@mail($empfaenger, $betreff, $mailbody, "From: $absender")) { echo " Herzlichen Dank! \n"; echo " Die Daten wurden weitergeleitet! \n"; } else { echo " Leider konnte Ihr Kontaktwunsch nicht verschickt werden. \n"; } } else { echo " Die E-Mail-Adresse muss angegeben werden und gültig sein! \n"; echo " [zurück zum Formular](javascript:history.back()) \n"; } ?\> Hier das Formular: Name: eMail: Telefon: Betreff: AnfrageKritik Nachricht: Wünsche Antwort:

Hallo Angela,

versuch’s mal damit:

$header = „Content-Type: text/plain\nChar-Set:ISO-8859-1\nContent-Transfer-Encoding: 8bit\nFrom:blush:absender\n“

Die Zeile zum Abschicken schaut dann so aus:
if (@mail($empfaenger, $betreff, $mailbody, $header))

Bei den meisten Providern funktioniert das zwar so, wie es in deinem Script steht, aber bei manchen sind eben diese zusätzlichen Header-Angaben erforderlich. Ich selbst habe da nach einem Providerwechsel schon mal sehr lange gesucht, bis ich diese Lösung fand.

Gruß, Robi

Hallo Robi,

vielen Dank für die prompte Antwort. Leider funtioniert das so nicht, ich bekomme folgende Fehlermeldung und das Formular wird gar nicht mehr versendet =>

Parse error: syntax error, unexpected T_FOREACH in /homepages/40/d227405263/htdocs/02-usedom/kontakt/unimailer.php on line 16

Was ist das jetzt?

Viele Grüße
Angela

Eine perfekte Lösung hab ich nicht,
aber auch schon viel Ärger gehabt.
Wenn die Daten auf HTML-Seite angezeigt werden,
dann hilft die Umwandlung nach A u m l ; und s z l i g ; usw (ohne Leerzeichen), sonst nur Ae und ss.

Hallo Angela,

hast du die Zeile mit dem „if (…“ ganz genau so übernommen, wie ich es getippselt habe? Dann fehlt da die öffnende Klammer, es muss also so ausschauen: if (@mail($empfaenger, $betreff, $mailbody, $header)) {

Sorry, habe ich übersehen.

Gruß, Robi