Alex: Zeilenumbrüche \r \n \r\n?!?

Hallo,

ich bin ziemlich verwirrt.
Dachte immer man macht Zeilenumbrüche korrekterweise in der Form \r\n

Ich habe auf meiner Site ein Formular.

Im Nachrichtentext ist einerseits der Text (aus der Textarea) den der User eingegeben hat und andererseits weitere Informationen (emailadresse, ...)

Ich habe das in etwar so dargestellt:
$text = "Anfrage von: XXX\r\nE-Mail: XXX\r\nTelefon\r\n....

Heute habe ich dann festgestellt, dass die NAchricht in Outlook - denke ich - falsch dargestellt wird.

Bei jedem \r\n ist eine Leerzeile, also:
Anfrage von.....

E-Mail....

Telefon....

Im Webmail (dieses "Horde" Ding) wird es allerdings korrekt angezeigt. (Also nur ein einfacher Umbruch)

Im Text aus der Textarea war auch bei jedem Umbruch eine Leerzeile.

Habe das Problem jetzt so behoben, dass ich die \r\n durch \n ersetzt habe. Sowohl im Textarea Text als auch in dem anderen Teil. Jetzt sieht es aus wie es sollte.

Aber das ist doch so nicht richtig gelöst, oder doch?

Vor ein paar Monaten hatte ich - glaube ich - mal das Problem, dass Outlook mir zu wening Umbrüche macht und manche irgendwie entfernt hat - dieses Programm spinnt (Oder bin ich es?)

Wäre über ein kleines Feedback dankbar

mfg
Alex

  1. Hallo, (...)
    Habe das Problem jetzt so behoben, dass ich die \r\n durch \n ersetzt habe. Sowohl im Textarea Text als auch in dem anderen Teil. Jetzt sieht es aus wie es sollte.

    Aber das ist doch so nicht richtig gelöst, oder doch?

    Doch. Verschiedene Betriebssysteme (und teilweise sogar eigene Programme) benutzen für Zeilenumbrüche (leider) verschiedene Zeichen.

  2. gudn tach!

    ich bin ziemlich verwirrt.
    Dachte immer man macht Zeilenumbrüche korrekterweise in der Form \r\n

    es gibt verschiedene moeglichkeiten, siehe z.b. wikipedia.

    das laesst sich aber nicht so ohne weiteres auf e-mails anwenden/verallgemeinern. hier muss man zwischen message-body und header unterscheiden:

    zum message-body steht im php-manual
    "Each [message] line should be separated with a LF (\n)".
    das ist afaik immer der fall, egal ob nun windows oder linux verwendet wird.

    beim header allerdings ist es nicht so einfach:
    das php-manual sagt
    "If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822."
    ueber die wertung "poor quality" laesst sich wohl streiten. zum hintergrund siehe kommentar #73355.

    prost
    seth

  3. Hi,

    Ich habe das in etwar so dargestellt:
    $text = "Anfrage von: XXX\r\nE-Mail: XXX\r\nTelefon\r\n....

    interessanter wäre das, was Du mit XXX nicht angegeben hast - und zwar nicht der Textinhalt, sondern die Zeilenendungen. Hier könnten sich nämlich noch Umbrüche eingeschmuggelt haben, die Du  bei der Übernahme der Daten in die Mail nicht gefiltert hast.

    freundliche Grüße
    Ingo

    1. Hi,

      danke für deine Antwort.

      Glaube aber nicht, dass das so spannend ist. Hinter XXX verbirgt sich nur soetwas wie $_POST['telefon'] da ist denke ich kein Umbruch -> kommt aus einem normalen <input> Feld
      Der Code steht auch so - also in einer Zeile ohne umbrüche im Code - dort.

      gruß
      Alex

      1. Hi,

        Glaube aber nicht, dass das so spannend ist. Hinter XXX verbirgt sich nur soetwas wie $_POST['telefon'] da ist denke ich kein Umbruch -> kommt aus einem normalen <input> Feld

        trotzdem würde ich mir var_dump($text) sicherheitshalber mal anschauen bzw. - wenn das Phänomen bei Dir nicht auftritt - $text mal eine Weile in einer Datei auf dem Server speichern.

        freundliche Grüße
        Ingo

      2. echo $begrüßung;

        Glaube aber nicht, dass das so spannend ist. Hinter XXX verbirgt sich nur soetwas wie $_POST['telefon'] da ist denke ich kein Umbruch -> kommt aus einem normalen <input> Feld

        Diese Annahme mag zwar für den jetzigen Fall gelten, ist aber nicht grundsätzlich richtig. Du gehst davon aus, dass nur normale Anwender mit normalen Browsern ein einzeiliges Eingabefeld ohne Zeilenumbruch bestücken können. Doch selbst da ist das nicht so. Mein Firefox unter Linux gestattet mir, mehrzeiligen Text aus der Zwischenablage in solch ein Eingabefeld einzufügen. Auch Spambots halten sich regelmäßig nicht daran, wenn es darum geht, in Headerzeilen eingefügte Benutzerangaben zu verwenden, um gleich noch ein paar weitere Zeilen einzufügen.

        echo "$verabschiedung $name";

        1. Ich wär schon froh wenn es so, mit dem richtigen Umbruch, bei den normalen Usern funktioniert.
          Nachdem der Serveradmin das Skript schon vom Server genommen hatte weil er vor lauter Spam angeblich zu überlasten drohte (Laut meinem Log file nacher war es nicht so viel) habe ich das ganze schon sehr sicher gemacht.
          Also ich denke nicht dass da noch ein Spambot durchkommt.
          Habe ein CAPTCHA und verschiedene Codeüberprüfungen.
          Circa 3 Tage lang gab es laut meinem Logfile, welches ich dann installiert habe noch versuche von den Bots, dann waren wir wieder von deren Liste runter und es war still...

          mfg
          Alex