Ankündigung

Einklappen
Keine Ankündigung bisher.

Php - Formular - e-mail in einer Zeile und Umlaute

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Php - Formular - e-mail in einer Zeile und Umlaute

    Hallo, ich versende ein Formular in der Form:

    PHP-Code:

        $Subject 
    "Formular: ".$_POST["Formular"];
        
    $MailTo "xyz@xyz.de";
        
    $From=$_POST["Email"];
        
    $antete .= "Von: ".$From."\r\n";
        
    $antete 'MIME-Version: 1.0'."\r\n";
                
    $antete "Content-Type: text/html; charset=utf-8"."\r\n"
          
    ."Content-Transfer-Encoding: 8bit"."\r\n";
        
        foreach( 
    $_POST as $key => $value )
        if( !empty( 
    $value ))
          
    $body .= $key.": ".$value."\r\n";
      
        
    mail($MailTo$Subject$body$antete);
        
    header"Location: danke.php" ); 
    unde bekomme folgende e-mail...

    Formular: E-mail Anfrage Vorname: äää Nachname: äää Telefon: 000 Email: aaa@aaa.com

    1. warum wird alles in einer Zeile geschrieben?was mache ich falsch?
    2. ist die utf-8 kodierung ok, oder könnte man es einfacher lösen

    danke für jeder hilfe...

    txp

  • #2
    1) benutze nicht mail() sondern eine anständige mail-Klasse (phpmailer / swiftmail)
    2) die Felder im Email-Header haben Englische Bezeichnungen, mit "von" kann kaum ein Email-Server was anfangen "From" wäre zu bevorzugen ...
    3) du gibst deinen Content-Type für den BODY - aber der muss für den Header der Nachricht gesetzt sein ... im Body bringt der nämlich nichts und ist nur Text
    versuch es mal mit dieser Zeile
    PHP-Code:

    $antete 
    "From: ".$From."\r\nContent-Type: text/html; charset=\"UTF-8\"\r\nContent-Transfer-Encoding: 8bit\r\n"

    Kommentar


    • #3
      eagle275...ja..ich hatte es auch bemerkt...und geändert..du hast eine noch einfachere lösung vorgeschlagen...danke...

      nun habe ich folgendes:

      PHP-Code:
      $Subject "Formular: ".$_POST["Formular"]."\n";
          
      $MailTo "xyz@xyz.de";
          
      $From =$_POST["email"];
          
      $antete "From: ".$From."\r\nContent-Type: text/html;  charset=\"UTF-8\"\r\nContent-Transfer-Encoding: 8bit\r\n";
          
              foreach( 
      $_POST as $key => $value )
          if( !empty( 
      $value ))
            
      $body .= $key": " .$value"\r\n";
        
          
      mail($MailTo$Subject$body$antete);
          
      header"Location: danke.php?lang=de" ); 
      ich bekomme aber immer noch die e-mail in einer Zeile...warum?

      Formular: E-mail Anfrage Vorname: äää Nachname: äää Telefon: 000 Email: aaa@aaa.com

      Kommentar


      • #4
        du schreibst jetzt eine HTML -Email ...

        und wie machst du in html einen Zeilenumbruch ?

        <br/> ? schonmal gehört / gelesen / selbst verwendet ?

        dein "Zeilenumbruch" bricht nur den HTML-Code um, aber wird nicht auf die Anzeige des HTML angewendet

        übrigens - in dem Zusammenhang wäre es "günstig", eine ECHTE HTML-Seite als Email zu versenden (also so richtig mit DocType und Head und title usw.) -

        Wenn du das nicht möchtest, dann ändere mal den Content-Type von text/html auf text/plain - ich weiß allerdings nicht, wie dein Email-Client dann mit utf8-codiertem Text umgeht - aber dann sollten selbst deine \r\n - Zeilenumbrüche tun

        Kommentar


        • #5
          Mails schickt man NICHT mit mail()
          http://www.php.de/adventskalender-20...fverkehrs.html
          http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail

          Hier findest du die besprochenen Klassen
          http://code.google.com/a/apache-extras.org/p/phpmailer/
          http://swiftmailer.org/
          http://pear.php.net/package/Mail/




          Das Herumgestochere mit mail() bringt dich nicht weiter.
          Beispiele für die Nutzung von PHPmailer findest du hier genügend.

          Kommentar


          • #6
            vielen dank allen, es hat geklappt. hier das end-skript, falls jemanden überhaupt interessiert:

            PHP-Code:
                $Subject "Formular: ".$_POST["Formular"];
                
            $MailTo "xyz@xyz.de";
                
            $From=$_POST["Email"];
                
            $antete .= "Von: ".$From."\r\n";
                
            $antete 'MIME-Version: 1.0'."\r\n";
                        
            $antete "Content-Type: text/plain; charset=utf-8"."\r\n"
                  
            ."Content-Transfer-Encoding: 8bit"."\r\n";
                
                foreach( 
            $_POST as $key => $value )
                if( !empty( 
            $value ))
                  
            $body .= $key.": ".$value."\r\n";
              
                
            mail($MailTo$Subject$body$antete);
                
            header"Location: danke.php" ); 
            danke auch für den klassen-hinweis, aber für 5 Felder jetzt mit Klassen zu arbeiten, wäre für mich wirklich extrem. vor allem, kenne ich mich damit wenig aus, ich habe kein funktionierendes Beispiel mit einem konkreten Formular gesehen. ich habe ein Formular mit 5 Felder : Name, Vorname, ...die Beispiele, die ich dort gesehen habe sind mmnach zu kompliziert aufgebaut...für mein php-niveau...ich sehe kein Formular, nur eine php datei...

            Kommentar

            Lädt...
            X