Florian Dümig: Formular Umlaute richtig darstellen? wie?

Hallo!

hab ein Problem bei der Weiterverarbeitung meines Formulars.
Ich bekomme im Outlook die Umlaute nicht richtig dargestellt!

Welchen Code muss ich noch einfügen und bitte angeben wo genau, da ich mich mit php überhaupt nicht auskenne. Wäre super wenn mir jemand helfen könnte.

Dankeschön.

hier der Code!

<?php

Konfiguration

Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

An welche Adresse sollen die Mails gesendet werden?

$strEmpfaenger = 'etiketten@rs-etiketten.de';

Welche Adresse soll als Absender angegeben werden?

(Manche Hoster lassen diese Angabe vor dem Versenden der Mail ueberschreiben)

$strFrom       = '"Formmailer" etiketten@rs-etiketten.de';

Welchen Betreff sollen die Mails erhalten?

$strSubject    = 'Bestellformular';

Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?

Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!

$strReturnhtml = 'http://www.rs-etiketten.de/danke.htm';

Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?

$strDelimiter  = ":\t";

Ende Konfiguration

if($_POST)
{
 $strMailtext = "";

while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;

}

  1. Hello,

    hab ein Problem bei der Weiterverarbeitung meines Formulars.
    Ich bekomme im Outlook die Umlaute nicht richtig dargestellt!

    Welche Codierung hat die Webseite? Üblich sind

    • ISO 8859-1     dann hättest Du aber vermutlich keine Probleme)
    • UTF-8          dann kannst Du den Formmailer nicht so einfach verwenden

    Mailtransfer wird ursprünglich nur über ASCII (127 Zeichen) abgewickelt. Da gibt es also gar keine Umlaute. Wenn Du Zeichen versenden willst, die außerhalb von ASCII liegen, musst Du die codieren.

    PHP hat dafür inzwischen fertige Funktionen:

    http://www.php.net/manual/en/function.mb-encode-mimeheader.php

    Nun ist es aber auch noch relevant, in welcher Codierung Deine PHP-Scripte vorliegen.
    Du solltest Dir also erst einmal ein Codierungsdiagramm erstellen, damut Du weißt, was wann wo wie codiert ist.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Moin!

      PHP hat dafür inzwischen fertige Funktionen:

      http://www.php.net/manual/en/function.mb-encode-mimeheader.php

      Wie du dem geposteten Code entnehmen kannst, sind sämtliche Informationen, die in den Header gelangen, frei von Umlauten und statisch, so dass diese Funktion nicht benötigt wird.

      Ich vermute einfach mal, dass das Problem im Mailbody liegt, und durch eine passende Angabe eines Mime-Typs inkl. Encoding gelöst werden kann.

      - Sven Rautenberg

      1. Leider komme ich damit nich zurecht, habe den Code kopiert kenne mich also damit nicht aus, benötige den Code den ich einfügen muss in der phpdatei.

        Vielleicht kann mir jemand helfen?

        Moin!

        »» PHP hat dafür inzwischen fertige Funktionen:
        »»
        »»    http://www.php.net/manual/en/function.mb-encode-mimeheader.php

        Wie du dem geposteten Code entnehmen kannst, sind sämtliche Informationen, die in den Header gelangen, frei von Umlauten und statisch, so dass diese Funktion nicht benötigt wird.

        Ich vermute einfach mal, dass das Problem im Mailbody liegt, und durch eine passende Angabe eines Mime-Typs inkl. Encoding gelöst werden kann.

        • Sven Rautenberg
        1. Leider komme ich damit nich zurecht, habe den Code kopiert kenne mich also damit nicht aus, benötige den Code den ich einfügen muss in der phpdatei.

          Vielleicht kann mir jemand helfen?

          Ja, fang doch erstmal da an, wo Tom geschrieben hat. Ich hab mir Deine HP und die 'danke.html' auch schonmal angeschaut, da sind verschiedene 'charset' deklariert. Es wäre gut, hier erst einmal aufzuräumen und eine einheitliche Linie reinzubringen.

          Hotte

          --
          Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
        2. Mahlzeit Florian Dümig,

          Leider komme ich damit nich zurecht, habe den Code kopiert kenne mich also damit nicht aus, benötige den Code den ich einfügen muss in der phpdatei.

          Dann bist Du hier leider komplett verkehrt. Dies hier ist das "SELF"HTML-Forum, nicht das "Ich-such-geil-funzenden-Code-hab-aber-keinen-Plan-davon-und-will-auch-nix-lernen,-kann-also-mal-jemand-meinen-Job-machen?"HTML.

          Abgesehen davon weiß aufgrund Deiner bisher mehr als dürftigen Problembeschreibung sicherlich keiner Deiner Leser genau, was der eigentliche Fehler ist, was Dein eigentliches Anliegen ist und wie man Dir helfen könnte ... hilf' anderen, Dir zu helfen.

          Vielleicht kann mir jemand helfen?

          Du Dir selbst. Indem Du Deinen Lesern genauere Informationen lieferst.

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        3. Hello,

          Leider komme ich damit nich zurecht, habe den Code kopiert kenne mich also damit nicht aus, benötige den Code den ich einfügen muss in der phpdatei.

          Vielleicht kann mir jemand helfen?

          Klar, darum bist Du ja hier :-)

          Vorgehensweise:

          Nimm Dir einen einfachen Mailclient, z.B. M$-Outlook-Express
          Baue Dir damit ein paar einfache Mails.

          • einfache Textmail (Format "nur Text") ohne Sonderzeichen, ohne Anhang
          • einfache Textmail (Format "nur Text") mit Sonderzeichen, ohne Anhang
          • einfache Textmail (Format "nur Text") ohne Sonderzeichen, mit einfacher Textdatei als Anhang
            usw.

          Diese Dateien schaust Du Dir dann in einem einfachen _guten_ texteditor an. Ich bevorzuge hier immer noch Textpad, da es einem ganz klar macht, was es wie anzeigt, also ob Sonderzeichen und UTF-8 schon decodiert angezeigt werden oder eben als Ein-Byte-Code "as it is"

          Daraus kannst Du einiges über den Aufbau von Mails lernen. Genau so muss ja der Formmailer die Mails aufbauen, die Du per Formular an das Script schickst.

          Und dann siche hier im Archiv und im Web nach dem Stichwort "MIME Mail".
          Da wirst Du garantiert fündig und kannst Deine Aufgabe lösen.

          Eine "schnelle Lösung" gibt es nicht, wen  Du verstehen willst, was alles dahinter steckt.
          Lass Dir ruhig ein wenig Zeit dafür - so ca. sechs Wochen - Du kannst das Wissen dann sicherlich noch etliche Jahre weiterverwenden. So schnell wird sich der Standard nicht vollständig ändern. Er hat schließlich auch über 30 Jahre gebraucht, um nach und nach auf den heutigen Stand zu kommen.

          Viel Erfolg

          Liebe Grüße aus Syburg bei Dortmund

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de