PHP - Kontaktformular - charset=utf-8 funktioniert nicht

  • Hallo, ich bin neu hier im Forum. Seitüber einem Jahr kommuniziere ich mit dem Support von 1und1 wegen meinem Kontaktformular und komme nicht weiter. Das Formular funktioniert, nur beim Weiterleiten werden die Umlaute nicht korrekt umgesetzt (beim Antworten schon ??). Lt. Support von 1und1

    "Im Header der E-Mail fehlt ein solcher Eintrag: Content-Type: text/plain; charset=UTF-8". Ich möchte mein Formular nicht groß ändern, eigentlich nur den von 1und1 geforderten Zeichensatz mitgeben. Kann mir da jemand einen Tipp geben, war ich falsch mache?


    $headers .= "Content-type: text/plain; charset=utf-8";

    $headers .= 'From:' . $absender . "\n";

    $headers .= 'Reply-To:' . $reply . "\n";

    $headers .= 'X-Mailer: PHP/' . phpversion() . "\n";

    $headers .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\n";


    Und als Hinweis:

    Ich bin in HTML ein wenig versiert; in PHP hab ich nur ganz marginale Grundkenntnisse.

    https://www.php-kurs.com/email-per-php.htm hab ich durchgearbeitet, komme aber damit auch nicht weiter.


    Vielen Dank, wenn sich Einer Meiner annimmt ;-)







  • Du benötigst vermutlich das Attribut accept-charset:

    Code
    1. <form method="post" accept-charset="UTF-8">

    Allerdings ist das Dein kleinstes Problem.

    Ich habe mir nicht angesehen, was Dein Tutorial da macht, aber wenn Du selber ehrlich bist und sagst, dass Du von PHP nur wenig Kenntnis hast, unterstelle ich Dir mal, dass Du nicht ausreichend Kenntnisse über die RFCs hast, die man benötigt, um Mails mit mail() roh zu versenden.


    Verwende daher lieber eine Mailerklasse, die nehmen Dir den wichtigsten Teil davon ab.

    Die gängigsten im Bereich PHP sind PHPMailerund SwiftMailer.


    Weiterhin ist es keine gute Idee, das @ Zeichen vor Funktionen zu verwenden! Du unterdrückst damit Fehlerausgaben, die bei der Fehlersuche später helfen können. Wenn eine solche Meldung ausgegeben werden soll, hat das i.d.R. schon Sinn.


    Tutorials, die einem das @ nahe bringen, sind aus meiner Sicht absolut nicht empfehlenswert!


    Dann arbeitest Du mit einem HTML4 Dokumententyp, das ist lange nicht mehr Up2Date, Du solltest HTML5 verwenden.

    Mag sein, dass das Tutorial ziemlich alt ist, aber ein Zeichen mehr dafür, dass es in die Tonne gehört.


    Bitte nicht falsch verstehen, wenn Du keinen Plan von PHP hast, kannst Du das alles nicht wissen.


    Gruß Arne

  • Danke, Arne, du hast Recht:

    Das Formular ist sehr alt, ich habe es nur immer wieder irgendwie angepasst.

    Meine Kenntnisse sind überholt, weil ich mich nicht ausreichend damit befasse.

    Ich bin über Fünfzig und vieles was ich lese kann ich nicht mehr so aufnehmen, wie ich es mir wünschen würde ;-)

    Aber ich muss da durch ! Wenn irgend möglich auf eine einfache Art und Weise :-)


    Das Attribut charset muss ich irgendwo reinsetzen.


    Gleich nach dem <body> hat nicht funktioniert: <FORM action="<? echo $script; ?>" method=post accept-charset="UTF-8">


    Pass die Syntax überhaupt?

  • Du hast in Deinem Code ja schon die FORM-Zeile, da gehört das Attribut mit rein, so wie ich es oben gepostet habe.

    Im HTL, wenn Du dann auf HTML5 gehst, sähe das so in etwa aus

    HTML
    1. <!DOCTYPE html>
    2. <html lang="de">
    3. <head>
    4. <title>...</title>
    5. <meta charset="utf-8">
    6. </head>
    7. ...
    8. </html>

    Du musst aber auch die Dateien selbst als UTF8 speichern.

    Es gibt viele Stellen, an denen Du das beachten musst. Hier findest Du die wichtigsten mal gesammelt.

  • Hey,


    ich habe mir mal deinen Code angeschaut.


    Ich rate dir, das komplette Layout zu überarbeiten, bzw. das Kontakformular neu zu erstellen.

    Das Tabellenlayout ist veraltet und oldschool. Desweiteren benutzt du im PHP Code das @ vor $_POST['']. Was für ein Sinn hat das?


    Schau dir aufjedenfall HTML 5 nochmal auf https://www.html-seminar.de/ an. Da lernst du das aktuelle HTML, wie man aktuelle Layouts umsetzt und vieles mehr.


    Zitat


    Wie könnte ich den Zeichensatz abfragen, der geschickt wird?

    Das brauchst du nicht. Dies halte ich für unnötig. Benutze wie Arne Drews geschrieben hat eine Mailerklasse. Mit denen bist du das Problem los.


    Desweiteren sehe dir auch unser Tutorial für ein Kontaktformular an: Kontaktformular Tutorial

    Dieses wird dir Schritt für Schritt erklären wie du ein aktuelles und funktionsfähiges Kontaktformular erstellen kannst.


    Grüße,

    Stef