[PHP] Problem mit mail()

kuggel

mtoools.de
ID: 117107
L
25 April 2006
122
5
und zwar folgendes, es funktioniert alles aber es nervt und sieht scheiße aus!
wenn ich z.b. einen Newsletter versenden will geb ich in die textbox folgendes ein:

PHP:
Hallo ich bin ein Newsletter
und hoffe ich werde gelesen!

aber er wird dem user so zugsandt:

PHP:
Hallo ich bin ein Newsletter

und hoffe ich werde gelesen!

also mit immer 1 leerzeichen zwischem dem text, wie kann das ich das umgehen? Ich bin da irgendwie am verzweifeln, mein Space hat PHP5!

Hat wer ne idee?

P.S.: der text ist komisch geschrieben, aber ich denke man kann es verstehen! Danke für alle die mir helfen! 8)
 
PHP:
$text="Hallo ich bin ein Newsletter\nund hoffe ich werde gelesen!";
So macht man das ; und wenns nicht so geht dann ist irgendwo der Wurm drin.
 
Is das ne text/plain- oder text/html-Mail ?

Eventuell geht mit \r\n und \n was schief ? Irgendwo Windoof im Spiel ?
Code ? Debugging ?
 
theHacker schrieb:
Is das ne text/plain- oder text/html-Mail ?

Eventuell geht mit \r\n und \n was schief ? Irgendwo Windoof im Spiel ?
Code ? Debugging ?

es ist ne text/plain-, und windows ist auch net mit im Spiel!
der code sieht in etwa soa aus:

PHP:
<?
  if($_POST['do'] == "send"){
    $text=$_POST['text'];
    mail($empfang, $betreff, $text, "From: blub.de <[email protected]>" );
  }
?>

<form action="" method="post">
<textarea name="text"></textarea>  <br>
<input type="hidden" name="do" value="send">
<input type="submit" name="submit" value="Senden">
</form>

habs nur mal eben soa geschrieben!
Und es wundert mich halt warum das so is!

Naja wör cool wenn irgendwer ne idee hätte!
 
kuggel schrieb:
Naja wör cool wenn irgendwer ne idee hätte!
Probier mal:
PHP:
$text=$_POST['text'];
// DEBUG
$text=str_replace("\n","(N)",$text);
$text=str_replace("\r","(R)",$text);
// END DEBUG
 
theHacker schrieb:
Probier mal:
PHP:
$text=$_POST['text'];
// DEBUG
$text=str_replace("\n","(N)",$text);
$text=str_replace("\r","(R)",$text);
// END DEBUG

danke, aber warum eig. /r ? also das es nen zeilenumbruch ist, kann ich mir denken aber warum /r ? also wer cool wenn du mir das noch sagen könntest!

achja ich habs jetzt soa gelöst, durch Hilfe von theHacker

PHP:
$text=$_POST['text'];
$text=str_replace("\r","",$text);

ob es die beste variante ist, weiß ich jetzt net, aber trotdem THX! Wer noch ne gute idee hat, einfach schreiben bin für jeden Tipp Dankbar!
 
kuggel schrieb:
danke, aber warum eig. /r ? also das es nen zeilenumbruch ist, kann ich mir denken aber warum /r ? also wer cool wenn du mir das noch sagen könntest!
Windows macht einen Zeilenumbruch mit \r\n, Linux nur mit \n.
D.h. du hast gelogen, weil du den Newsletter auf einem Windows-Clienten verschickt hast :p Aus irgendeinem Grund hat der Linuxserver das \r\n beim Verschicken zu \n\n gemacht und du hattest ne Leerzeile.
kuggel schrieb:
PHP:
$text=$_POST['text'];
$text=str_replace("\r","",$text);
ob es die beste variante ist, weiß ich jetzt net
Nimm die, die is ordentlicher:
PHP:
$text=str_replace("\r\n","\n",$_POST['text']);
 
ich nochmal ich hab mir mal erlaubt den code leicht zu optimieren ;)

PHP:
<?
  if(isset($_POST['submit'])){
    $text=$_POST['text'];
    mail($empfang, $betreff, $text, "From: blub.de <[email protected]>" );
  }
?>

<form action="" method="post">
<textarea name="text" wrap="soft"></textarea>  <br>
<input type="submit" name="submit" value="Senden">
</form>
das do hiddenfeld brauchst du net wirklich probier mal

und nur mal so also ding weis net obs funzt aber klammer doch mal die mail funktion aus und lass dir den text mit var_dump() ausgeben weis aber net ob man da auch die leerzeilen sieht:-? sorry