Gelöst: Programmierung | php | Kontaktformular | Umlaute

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Hallo an alle php-Experten!


    Ich habe ein Problem mit einem Kontaktformulat und den Umlauten:


    Das Formular wird ausgefüllt, abgeschickt und die eingtragenen Umlaute werden auch richtig dargestellt. Mein Problem liegt in dem Standardtext, den ich in der Bestätigungsmail generiere. Hier werden dei Umlaute nicht richtig dargestellt:


    Code
    1. .......
    2. $dsubject = "Ihre Anfrage";
    3. $dmailheaders = "From: <".$empfaenger.">\n";
    4. $dmailheaders .= "Reply-To: <".$empfaenger.">\n";
    5. $dmailheaders .= 'Content-Type: text/plain; charset=iso-8859-1';
    6. $dmessage .= "Vielen Dank für Ihre E-Mail. Wir werden uns schnellstmöglich mit Ihnen in Verbundung setzten.\n\n";
    7. $dmessage .= "Name: " . $vorname . " " . $name . "\n";
    8. ......


    aus der Zeile $dmessage .= "Vielen Dank .... weden die Umlaute nicht in der Email ausgegeben. Das Ändern des Charset im Header ändert nichts an der Ausgabe dieses Textes.


    Hat jemand von euch einen Tipp?


    Vielen Dank


    Grüße

    BuLiTipp: 4.1.2 | php: 5.2 | MySql: 5.5| Editor: Notepad++, Dreamweaver | Provider: alfahosting

  • Moin


    Code
    1. charset=iso-8859-1


    änder das mal in

    Code
    1. charset=utf-8


    Sollte das nicht funktionieren benutz die HTML-Codierung für Umlaute
    ä = &auml;
    ü = &uuml;
    ö = &ouml;
    Ä = &Auml;
    Ü = &Uuml;
    Ö = &Ouml;
    das gleiche gilt auch für 'ß' = &szlig;

  • Für eMails sind die HTML-Codes eher ungeeignet, da nicht jeder HTML-Mails anzeigen kann. Es muss über charset funktionieren. Wenn du im eMail-Charset UTF8 angibst, dann sollte auch die Datei, in der du den eMail-Text angegeben hast in UTF8 gespeichert sein. Über welche Funktion/Script sendest du die eMails? Auch da könnte noch das Problem iegen.

    XCRIPT.DE - Home of BuLitipp, the original!
    Zufrieden mit dem Skript und dem Support? Möchtest du uns unterstützen? Dann könntest du etwas

    SPENDEN

  • Hallo und danke für eure Antworten.


    AbRaXaS: Danke für den Tipp. Wie ich schon geschrieben habe, hat die Änderung Charset (auf UTF8) mein Problem nicht behoben. Dabei habe ich auch versucht die HTML-Formulierungen für die Umlaute zu verwenden wie du sie aufgelistet hast. Ergebnis war, dass ich in der Antwort nicht ein ü sondern &uuml; stehen hatte :S


    Sören: Die Seite hat ein "include" an erster Stelle, in der die php-Datei eingebunden wird, welche die Programmierung für die Pflichtfelder und das Versenden bei korrekter Eingabe enthält.

    PHP
    1. // wenn kein Fehler, wird eine E-Mail versendet if (!isset($error)) {// Kopf der E-Mail $recipient = "mail@mail.de"; // Bitte tragen Sie hier Ihre E-Mail Adresse ein. (zwischen den Anführungszeichen) $betreff = "Anfrage vom Kontaktformular"; $mailheaders = "From: \"".stripslashes($_POST["vorname"])." ".stripslashes($_POST["name"])."\" <".$_POST["email"].">\n"; $mailheaders .= "Reply-To: <".$_POST["email"].">\n"; $mailheaders .= "X-Mailer: PHP/" . phpversion() . "\n"; $mailheaders .= 'Content-Type: text/plain; charset=iso-8859-1';// Darstellung der E-Mail $message = "Folgendes wurde am ". $date ." Uhr per Formular geschickt:\n" . "-------------------------------------------------------------------------\n\n"; $message .= "Name: " . $vorname . " " . $name . "\n"; $message .= "E-Mail: " . $email . "\n"; $message .= "Firma: " . $firma . "\n"; $message .= "Nachricht:\n" . $_POST['nachricht'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['nachricht']) . "\n"; "-------------------------------------------------------------------------\n\n"; $message .= "\n\nIP Adresse: " . $ip . "\n"; $message .= "Host: " . $host . "\n"; $message .= "Browser und Betriebssystem: " . $UserAgent . "\n"; $message = strip_tags ($message);// Dankes E-Mail $dsubject = "Ihre Anfrage"; // Betreff der Nachricht $dmailheaders = "From: <".$recipient.">\n"; $dmailheaders .= "Reply-To: <".$recipient.">\n"; $dmailheaders .= 'Content-Type: text/plain; charset=iso-8859-1'; $dmessage .= "Vielen Dank fuer Ihre E-Mail. Wir werden schnellstmoeglich darauf antworten.\n\n"; $dmessage .= "Zusammenfassung: \n\n"; $dmessage .= "Name: " . $vorname . " " . $name . "\n"; $dmessage .= "E-Mail: " . $email . "\n"; $dmessage .= "Firma: " . $firma . "\n"; $dmessage .= "Nachricht:\n" . $_POST['nachricht'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['nachricht']) . "\n"; $dmessage = strip_tags ($dmessage);if (mail($recipient,$betreff,$message,$mailheaders)) {mail($email, $dsubject, $dmessage, $dmailheaders);// Danke-Seite, wenn E-Mail versendet wurdeheader ("location: nachricht2.html");exit;


    Im Header der Datei ist charset=iso-8859-1. Das Formular wird einfach mit method="post"

    PHP
    1. <form action="<?php $_SERVER['PHP_SELF'];?>" method="post">

    und dem submit button gesendet.


    Der Inhalt aus dem Formular wird richtig angegeben (Umlaute). Nur bei dem fest generierten Text werden die Umlaute nicht dargestellt.....


    Irgend eine Idee?

    BuLiTipp: 4.1.2 | php: 5.2 | MySql: 5.5| Editor: Notepad++, Dreamweaver | Provider: alfahosting

    Einmal editiert, zuletzt von Markus ()

  • Markus: OK, das du das schon probiert hattest habe ich erfolgreich überlesen.


    Ist das Charset in der obersten Ebene der Webseite definiert oder ist es sozusagen in eine Seite eingebunden, die an anderer Stelle das Charset schon definiert? Wie reagiert das Formular, wenn du mal verschiedene Browser ausprobierst, z.B. IE8, FF3, Opera 10 u.ä.


    Wie Sören schon schreibt sollte das Problem mit dem Charset utf-8 behoben sein. Kannst du sonst mal den Link des Formulars posten?

  • Danke für die Tipps!


    Ich habe den Charset auf der Seite selbst in UTF8 geändert und jetzt werden die Mails richtig ausgegeben!


    Grüße

    BuLiTipp: 4.1.2 | php: 5.2 | MySql: 5.5| Editor: Notepad++, Dreamweaver | Provider: alfahosting