Doppelter Zeilenumbruch bei mail()

glowhand

Programmierer
21 April 2006
273
16
Hallo ;)
melde mich mal wieder mit einem Problem.
Ich soll für eine Firma eine Webseite erstellen, die ein Kontaktformular beinhaltet. Das ist in so weit auch schon fertig. Einziges Problem ist, dass aus einem Zeilenumbruch in einer textarea in der empfangenen Mail dann 2 Zeilenumbrüche werden... Beispiel, der Besucher gibt einen Text ein:

----------------------
Hallo,
habe eine Frage.
Und zwar.
zu dem und dem
----------------------

Die Mail wird dann so empfangen:

Hallo

habe eine Frage.

Und zwar.

zu dem und dem.


Also immer eine Leerzeile dazwischen.
Habe schon versucht, \n und \r zu ersetzen, aber das hat keine Wirkung.

Es werden keine extra Header-Daten gesendet.
Die Mail wird im Text-Format versandt.
 
PHP:
$inhalt = str_replace("\r",'',$inhalt);

Damit sollte es gehen.
Die Textarea macht aus Zeilenumbrüche ein \r\n und damit kommen manche Mail-Programme nicht klar.
Deshalb den Text den du abschickst, vorher durch obigen Code verändern und den neuen Text dann verschicken. Dann sollte es gehen.
 
nein, wie gesagt, der zeilenumbruch bleibt doppelt :(

edit:

auf die art scheints zu funktionieren;:
PHP:
$_POST['message'] = str_replace("\r\r","\n",$_POST['message']);
$_POST['message'] = str_replace("\n\n","\n",$_POST['message']);
$_POST['message'] = str_replace("\n\r","\n",$_POST['message']);
$_POST['message'] = str_replace("\r\n","\n",$_POST['message']);

scheint mir aber seeeehhhr unsauber :-?
 
Zuletzt bearbeitet:
ich lass es jetzt erstmal dabei, werde mich damit später nochmal genauer beschäftigen.
danke dir für deine hilfe
 
nabend,
um ein paar zeilen zu spaaren kannst du auch preg_replace nutzen.

Code:
$_POST['message'] = preg_replace("/\r\r|\r\n|\n\r|\n\n/","\n",$_POST['message'])
hätte den selben effekt.

Gruß,
Whirpool
 
Zuletzt bearbeitet: