Mailfunktion gibt Zeichen für Zeilenumbrüche in textarea aus
Hi,
ich habe jetzt diverse Foren durch und alles ausprobiert, was Google mir ausgespuckt hat bzw. mir in den Sinn kam. Ich komme nicht weiter, vielleicht könnt ihr mir helfen.
Vor mir liegt ein Formular, mit welchem ich per "mail" die Daten, die per POST übermittelt werden, an mich schicke. Nun habe ich im Script selber die Input-Felder durch "\r\n" mit einem Abstand versehen, dies kommt auch in der E-Mail so an. Also
Vorname
Nachname
usw.
Ganz unten gibt es eine textarea ($text), sobald der User hier was einträgt, bekomme ich in meiner E-Mail diese als "\r\n" angezeigt. Versucht habe ich schon folgendes:
- header komplett weggelassen (außer natürlich dem Absender)
- header Content-Type auf plain bzw. html gesetzt, bei beiden mal folgendes getestet:
(letzteres ein Verzweiflungsakt *g*)
- header Content-Type auf utf-8 und ISO-8859-1 gesetzt (aktuell wieder utf-8)
- in der textarea ein "nl2br" eingefügt (auch Verzweiflungsakt)
und zuletzt nochmal - aus Verzweiflung - den Text der textarea htmltauglich gemacht
Ich weiß nicht mehr, was ich noch tun soll. Sehr kurios finde ich auch die Tatsache, dass genau das selbe Script (außer dem header) auf anderen Servern ohne Probleme funktioniert. Über den Server kann ich euch noch nichts sagen, aber ich gehe mal von Debian aus. EDIT: Server OS ist Debian.
Hat jemand eine Idee?
Mfg
Mitchell
ich habe jetzt diverse Foren durch und alles ausprobiert, was Google mir ausgespuckt hat bzw. mir in den Sinn kam. Ich komme nicht weiter, vielleicht könnt ihr mir helfen.
Vor mir liegt ein Formular, mit welchem ich per "mail" die Daten, die per POST übermittelt werden, an mich schicke. Nun habe ich im Script selber die Input-Felder durch "\r\n" mit einem Abstand versehen, dies kommt auch in der E-Mail so an. Also
Vorname
Nachname
usw.
Ganz unten gibt es eine textarea ($text), sobald der User hier was einträgt, bekomme ich in meiner E-Mail diese als "\r\n" angezeigt. Versucht habe ich schon folgendes:
- header komplett weggelassen (außer natürlich dem Absender)
- header Content-Type auf plain bzw. html gesetzt, bei beiden mal folgendes getestet:
str_replace("\r\n", "", $text)
str_replace("\r\n", "\r", $text)
str_replace("\r\n", "\n", $text)
str_replace("\r\n", "\n\n", $text)
str_replace("\r\n", "<br>", $text)
str_replace("<br>", "\r\n", $text)
(letzteres ein Verzweiflungsakt *g*)
- header Content-Type auf utf-8 und ISO-8859-1 gesetzt (aktuell wieder utf-8)
- in der textarea ein "nl2br" eingefügt (auch Verzweiflungsakt)
und zuletzt nochmal - aus Verzweiflung - den Text der textarea htmltauglich gemacht
nl2br($text)
htmlentities($text)
Ich weiß nicht mehr, was ich noch tun soll. Sehr kurios finde ich auch die Tatsache, dass genau das selbe Script (außer dem header) auf anderen Servern ohne Probleme funktioniert. Über den Server kann ich euch noch nichts sagen, aber ich gehe mal von Debian aus. EDIT: Server OS ist Debian.
Hat jemand eine Idee?
Mfg
Mitchell
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 174330
Url: https://administrator.de/contentid/174330
Ausgedruckt am: 19.12.2024 um 12:12 Uhr
19 Kommentare
Neuester Kommentar
Hallo
"Normale" Zeilenumbrüche werden in/als HTML doch nicht angezeigt, bzw. nur als "Leerzeichen" - genau wie Tabulatoren oder mehrere Leerzeichen ;)
Wie fügst du das denn in die E-Mail ein (Quellcode)
Mach hier auch noch einmal ein var_dump(), von der Variable mit dem Text selber und hinterher vom E-Mail-Quellode und von der POST-Variable !
...im Quelltext schauen...
Etwa
Was für ein System verwendest du ?
Bzw. Wie stellt dein System einen Zeilenumbruch dar ? (\r | \n | \r\n)
~Arano
...bekomme ich als Antwort string(9) "i k k "
Du musst dann __in den Quelltext__ der erzeugten Seite schauen !"Normale" Zeilenumbrüche werden in/als HTML doch nicht angezeigt, bzw. nur als "Leerzeichen" - genau wie Tabulatoren oder mehrere Leerzeichen ;)
Wie fügst du das denn in die E-Mail ein (Quellcode)
Mach hier auch noch einmal ein var_dump(), von der Variable mit dem Text selber und hinterher vom E-Mail-Quellode und von der POST-Variable !
...im Quelltext schauen...
Ach ja..:$text ist natürlich $_POST['text']
Was soll das heißen ?Etwa
$text = $_POST['text']
oder gar register_globals = On
?Was für ein System verwendest du ?
Bzw. Wie stellt dein System einen Zeilenumbruch dar ? (\r | \n | \r\n)
~Arano
Hi Mitchell
Hehe... ich wollte wissen was für ein System DU verwendest, welches Betriebssystem hat der Computer mit dem du den Browser aufrufst. Aber da du Outlook verwendest, wird es wohl ein Windows sein.
Genau das wollte ich doch sehen, also wie setzt du die Variable
und wo ich das gerade sehe, zeige gleich noch mal wie du
Edit:
Handelt es sich eigentlich um Plaintext- oder HTML-Mails ?
~Arano
Was für ein System verwendest du ?
Der Server läuft unter Debian und lt. var_dump sind die Umbrüche mit \r\n dargestellt...so zeigt es mein Outlook 2000 übrigens auch an.Wie fügst du das denn in die E-Mail ein (Quellcode)
...in $msg stehen die restlichen Variablen und natürlich dann die Variable $text.$msg
zusammen, den Quellcode.und wo ich das gerade sehe, zeige gleich noch mal wie du
$header
zusammensetzt und was drin steht.Edit:
Handelt es sich eigentlich um Plaintext- oder HTML-Mails ?
~Arano
Werden denn die anderen Zeilenumbrüche in der Mail richtig dargestellt?
Thema str_replace:
Das einzige was entfernt Sinn machen würde wäre
Dann solltest du mal error_reporting anschalten und dir den Fehler angucken
$msg = $vorname."\r\n\r\n".$nachname
Thema str_replace:
Das einzige was entfernt Sinn machen würde wäre
str_replace("\\r\\n","\r\n",$text);
, dann bekomme ich ein bool(false)
Dann solltest du mal error_reporting anschalten und dir den Fehler angucken
Naja, ganz einfach:
In deiner E-Mail steht der Text "\r\n" (das sind die vier Zeichen \ r \ n)
Ein
Dein
Du wolltest aber den Regulären Text "\r\n" in einen Zeilenumbruch umwandeln.
In dem Fall kannst du es entweder als
Allerdings ist das immer noch keine Lösung.
Wenn in dem gePOSTeten Text die Zeilenumbrüche noch regulär sichtbar sind musst du ja irgendwo einen Code-Aufruf haben, der die Zeilenumbrüche konvertiert.
In deiner E-Mail steht der Text "\r\n" (das sind die vier Zeichen \ r \ n)
Ein
"\r\n"
wird in PHP ausgewertet zu, na....genau einem Zeilenumbruch (also den zwei Zeichen CR LF).Dein
str_replace("\r\n", chr(10).chr(13), $text)
würde also schlicht einen Zeilenumbruch mit einem Zeilenumbruch ersetzen (allerdings der hoch-untypischen Variante LF CR) Du wolltest aber den Regulären Text "\r\n" in einen Zeilenumbruch umwandeln.
In dem Fall kannst du es entweder als
"\\r\\n"
oder '\r\n'
schreiben.Allerdings ist das immer noch keine Lösung.
Wenn in dem gePOSTeten Text die Zeilenumbrüche noch regulär sichtbar sind musst du ja irgendwo einen Code-Aufruf haben, der die Zeilenumbrüche konvertiert.
Irgendwie war mir das schon klar....
Damit meinte ich, dass die Zeilenumbrüch als
dargestellt werden.
Ist für mich kein regulärer Zeilenumbruch.
Womit wir wieder beim Thema sind: Auf dem Server läuft irgendein Modul, dass Zeilenumbrüche escapt.
Die Zeilenumbrüche sollten dann regulär dargestellt werden.
Damit meinte ich, dass die Zeilenumbrüch als
Hallo
Welt
Welt
dargestellt werden.
Hallo\r\nWelt
Ist für mich kein regulärer Zeilenumbruch.
Womit wir wieder beim Thema sind: Auf dem Server läuft irgendein Modul, dass Zeilenumbrüche escapt.