Ankündigung

Einklappen
Keine Ankündigung bisher.

etwas verwirrt bezüglich zeilenumbruch

Einklappen

Neue Werbung 2019

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

  • etwas verwirrt bezüglich zeilenumbruch

    ich habe ein mailformular in dem ich den vornamen, nachnamen, email und das messagefield übergebe und dann maile. eh klar.

    allerdings ist das resultat höchst sonderbar:
    PHP-Code:
    $contact_email 'email@provider.com';
    $contact_subject 'Betreffszeile';

    $message.= 'Name: '.$_POST['prename'].''.$_POST['lastname']."\n";
    $message.= 'Email: '.$_POST['email']."\n\n";
    $message.= $_POST['messagefield'];

    $message strip_tags($message);

    mail($contact_email$contact_subject$message"From: ".$_POST['email']."\nReply-To: ".$_POST['email']."\nMeinErsterMailer: PHP/".phpversion());

    echo 
    'Nachricht wurde wie folgt gesandt:
    '
    ;
    echo 
    nl2br($message); 
    bei annahme:
    - prename = alex
    - lastname = maier
    - email = alex.maier@provider.com
    - message = hallo<ENTER>ich<ENTER,ENTER>bin alex

    sollte das ganze ja so im mailprogramm UND auf der webseite (weil nl2br) so aussehen:
    Name: alex maier
    Email: alex.maier@provider.com

    hallo
    ich

    bin alex

    1.) im mailprogramm (thunderbird, outlook, ...) schaut das ganze so aus:
    Name: alex maier
    Email: alex.maier@provider.com

    hallo

    ich



    bin alex
    2. im webmail sieht das ganze normal aus und der quellcode so:
    <pre>
    Name: alex maier
    Email: alex.maier@provider.com

    hallo
    ich

    bin alex
    </pre>
    wie kann das sein??? habt ihr da eine idee?

  • #2
    Kann man das irgendwo live sehen?

    Kommentar


    • #3
      natürlich. hab das formular mal auf meinen webspace raufgespielt: http://www.gamespot.at/mail.php
      einfach emailkopie anklicken.

      ist das ganze kontaktformular. nicht mehr die hier abgespeckte version.

      gibt mir echt ein rätsel auf.

      Kommentar


      • #4
        Das Problem kann ich nicht nachvollziehen.

        discardmail webmail:


        thunderbird 1.5:

        Kommentar


        • #5
          sehr sonderbar. dein mail sieht bei mir wie folgt aus. thunderbird 1.504:


          und warum steht bei dir die sonderbare absender email und bei mir nicht???

          Kommentar


          • #6
            Keine Ahnung. Das ist die Kopie, die ich über das Webformular erhalten habe.

            Kommentar


            • #7
              das ist in der tat komisch. gleiche version, anderes ergebnis? an den einstellungen kanns ja auch nicht liegen. hab das grad mal gecheckt. outlook hab ich hier leider nicht drauf. würde mich interessieren wie es dort aussieht.

              Kommentar


              • #8
                Zitat von Promaetheus
                wie kann das sein??? habt ihr da eine idee?
                Das liegt vermutlich daran, dass sowohl CR als auch CRLF (über das Webformular - messagefield) in der Mail verwendet werden.

                Verwende einheitlich eine der Zeichenfolgen, die als Zeilenumbruch interpretiert werden soll - üblicherweise CRLF.

                Zitat von Promaetheus
                und warum steht bei dir die sonderbare absender email und bei mir nicht???
                Wahrscheinlich ändert discardmail.com die Absenderadresse, da der Name des sendenden Servers nicht mit dem des "From:"-Headers übereinstimmt.

                Zitat von Promaetheus
                das ist in der tat komisch. gleiche version, anderes ergebnis?
                So komisch ist das auch wieder nicht. Da sich hinter discardmail der PHPMailer versteckt, der so manches "wegoptimiert" - so auch falsche Zeilenumbrüche (einfaches LF) -, kommt die Mail schließlich und endlich syntaktisch korrekt an.

                Den PHPMailer köntest Du Dir im Übrigen auch einmal anschauen, um Probleme wie dieses erst gar nicht entstehen zu lassen:

                http://phpmailer.sourceforge.net/

                Kommentar


                • #9
                  cr und crlf? was meinst du damit? das ist der zeilenumbruch \n (cr) und \r\n (crlf) oder?
                  ich kann ja nicht sagen was verwendet wird?! das hängt ja davon ab welches system auf dem server läuft oder?
                  und wenn ich das messagefield direkt OHNE änderung und formatierung mit mail übergebe müsste das ja das mailprogramm schaffen oder?

                  wenn ich sonst sachen von einem formular auf der webseite anzeigen lasse, stimmt das ja auch alles. ich lasse hier den eintrag in die datenbank auch ohne formatierung speichern, sprich mit allen \n oder \r\n, je nachdem was für ein betriebssystem auf dem server installiert ist.
                  dann lasse ich den datenbankeintrag so ausgeben:
                  echo str_replace("\n", "
                  ", str_replace("\r\n", "\n", $datenbankeintrag));

                  und das funktioniert ja auch. bin jetzt echt total verwirrt wenn ich ehrlich bin.

                  Kommentar


                  • #10
                    Zitat von Promaetheus
                    und wenn ich das messagefield direkt OHNE änderung und formatierung mit mail übergebe müsste das ja das mailprogramm schaffen oder?
                    Nur weil Du meinst, dass es das müsste, tut es das noch längst nicht. Und was sollte daran so verkehrt sein, sich auf syntaktisch korrekte E-Mails mit einheitlichen Zeilenumbrüchen zu verlassen?

                    Versuche doch einfach einmal durchgehend CRLF (ja das schreibt sich "\r\n") zu verwenden - wie gesagt: am einfachsten mit dem PHPMailer...

                    Kommentar


                    • #11
                      sorry. ich bin da vielleicht noch zuuuuu noob.

                      ich MÖCHTE ja syntaktisch korrekte mails machen. genau DARUM geht es mir ja. ich habe folgenden code zum fertigen der übertragenen nachricht:
                      PHP-Code:
                      $contact_email 'email@provider.com';
                      $contact_subject 'Betreffszeile';

                      $message.= 'Name: '.$_POST['prename'].''.$_POST['lastname']."\n";
                      $message.= 'Email: '.$_POST['email']."\n\n";
                      $message.= $_POST['messagefield'];

                      $message strip_tags($message);

                      mail($contact_email$contact_subject$message"From: ".$_POST['email']."\nReply-To: ".$_POST['email']."\nMeinErsterMailer: PHP/".phpversion()); 
                      du meinst ich soll anstatt von \n \r\n verwenden oder?

                      das lustige ist aber dass das UNFORMATIERTE textfeld ja 1:1 übergeben wird und DAS wird dann eben falsch dargestellt. siehe screenshots oben.
                      das jetztige \n in \r\n zu ändern ist kein problem und mache ich natürlich, jedoch ändert dies ja an der frage/problemstellung nichts oder?

                      das was ich da gemacht habe ist ja ein php mailer oder und genau um DAS gehts mir ja ? sprich ich maile was damit.

                      Kommentar


                      • #12
                        Zitat von Promaetheus
                        das was ich da gemacht habe ist ja ein php mailer oder und genau um DAS gehts mir ja ? sprich ich maile was damit.
                        Gemeint war nicht "ein mailer in php" sondern "phpmailer, das Softwareprojekt"
                        http://phpmailer.sourceforge.net/

                        Kommentar


                        • #13
                          Zitat von Promaetheus
                          das lustige ist aber dass das UNFORMATIERTE textfeld ja 1:1 übergeben wird und DAS wird dann eben falsch dargestellt.
                          Ja, und wahrscheinlich wird hier eine Zeile durch CRLF abgeschlossen.

                          Zitat von Promaetheus
                          du meinst ich soll anstatt von \n \r\n verwenden oder?
                          In etwa. Ich meine, Du sollst eine einheitliche Zeichenfolge in der gesamten Mail verwenden. So geht das z.B.:
                          PHP-Code:
                          <?php
                            $search  
                          = array("\r\n""\r""\n"  );
                            
                          $replace = array("\n",   "\n""\r\n");
                            
                          $message str_replace($search$replace$message);
                          ?>
                          Zitat von Promaetheus
                          das was ich da gemacht habe ist ja ein php mailer oder und genau um DAS gehts mir ja ?
                          Wenn Du es so willst, ja. PHPMailer ist aber eine Klasse, die Dir das Versenden von Mails erheblich vereinfacht und nebenbei auf die richtige Syntax achtet.

                          Kommentar


                          • #14
                            Zitat von Promaetheus
                            dann lasse ich den datenbankeintrag so ausgeben:
                            echo str_replace("\n", "
                            ", str_replace("\r\n", "\n", $datenbankeintrag));
                            Dafür kannst du auch wesentlich einfacher nl2br() verwenden.

                            Kommentar

                            Lädt...
                            X