Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilenumbruch geht nicht \n
RungeZipperer
01-02-2007, 10:52
Hallo,
ganz kurz ne Frage von einem PHP-Neuling:
Hab hier ein Skript, dass zur Anmeldung für ein Labor verwendet wird und die Anmeldedaten per Email an mich sendet.
mail('xxx@xxx.de', 'Anmeldung', $emailtext);
Der Text besteht immer aus 5 Zeilen:
$emailtext = "Teilnehmer1; $name1; $vorname1; $mnummer1; $email1; $studgang1;\r\n";
$emailtext .= "Teilnehmer2; $name2; $vorname2; $mnummer2; $email2; $studgang2;\r\n";
$emailtext .= "Teilnehmer3; $name3; $vorname3; $mnummer3; $email3; $studgang3;\r\n";
$emailtext .= "Teilnehmer4; $name4; $vorname4; $mnummer4; $email4; $studgang4;\r\n";
$emailtext .= "Versuche; $v2; $v3; $v5; $v6\r\n";
Leider sind es aber in meiner Email nicht 5 Zeilen, weil der Zeilenumbruch \r\n nicht funktioniert. Kann jemand helfen?
Vielen Dank.
Romanday
01-02-2007, 16:50
Leider sind es aber in meiner Email nicht 5 Zeilen, weil der Zeilenumbruch \r\n nicht funktioniert. Kann jemand helfen?
Vielen Dank.
Versuch mal nur \n, lösche einfach mal das \r.
undefined
01-02-2007, 19:29
Hallo,
ganz kurz ne Frage von einem PHP-Neuling:
Hab hier ein Skript, dass zur Anmeldung für ein Labor verwendet wird und die Anmeldedaten per Email an mich sendet.
mail('xxx@xxx.de', 'Anmeldung', $emailtext);
Der Text besteht immer aus 5 Zeilen:
$emailtext = "Teilnehmer1; $name1; $vorname1; $mnummer1; $email1; $studgang1;\r\n";
$emailtext .= "Teilnehmer2; $name2; $vorname2; $mnummer2; $email2; $studgang2;\r\n";
$emailtext .= "Teilnehmer3; $name3; $vorname3; $mnummer3; $email3; $studgang3;\r\n";
$emailtext .= "Teilnehmer4; $name4; $vorname4; $mnummer4; $email4; $studgang4;\r\n";
$emailtext .= "Versuche; $v2; $v3; $v5; $v6\r\n";
Leider sind es aber in meiner Email nicht 5 Zeilen, weil der Zeilenumbruch \r\n nicht funktioniert. Kann jemand helfen?
Vielen Dank.
Du benötigst kein Carrige Return weil deine E-Mail im text plain gesendet wird die gewollte 8Bit Darstellung nicht unterstützt.
Du hast ein header() und Encoding Definitions Problem.
$emailtext = <<<EOT
Versuche
$v2
$v3
$v5
$v6
EOT;
RungeZipperer
02-02-2007, 07:39
Du benötigst kein Carrige Return weil deine E-Mail im text plain gesendet wird die gewollte 8Bit Darstellung nicht unterstützt.
Du hast ein header() und Encoding Definitions Problem.
PHP-Code:
$emailtext = <<<EOT
Versuche
$v2
$v3
$v5
$v6
EOT;
Schade, das klappt irgendwie nicht. Und das weglassen von \r hatte ich schon ausprobiert, das macht auch keinen Unterschied. Eigenartig :confused:
Romanday
02-02-2007, 10:10
Schade, das klappt irgendwie nicht. Und das weglassen von \r hatte ich schon ausprobiert, das macht auch keinen Unterschied. Eigenartig :confused:
Hast Du schon 1x getestet ob Du überhaupt eine eMail versenden kannst?
Schreib dir doch einmal zum Test eine Email mit einem Wort.
RungeZipperer
02-02-2007, 11:08
Hast Du schon 1x getestet ob Du überhaupt eine eMail versenden kannst?
Ja klar, die Emails bekomme ich. Nur eben alles in einer Zeile.
Romanday
02-02-2007, 11:46
Ja klar, die Emails bekomme ich. Nur eben alles in einer Zeile.
Dann sende dir noch mal eine eMail mit folgendem Text.
$text='Dies<br>ist<br>ein<br>Zeilemumbruch.';
Wenn jetzt Zeilenumbrüche zu sehen sind wird deine eMail von
deinem eMailprogramm automatisch im HTML Format interpretiert.
Vielleicht liegt es daran.
RungeZipperer
02-02-2007, 12:12
Wenn jetzt Zeilenumbrüche zu sehen sind wird deine eMail von
deinem eMailprogramm automatisch im HTML Format interpretiert.
Vielleicht liegt es daran.
Prima Idee, hab ich gerade probiert. Leider seh ich dann in der Email das <br> und keinen Zeilenumbruch...Herje...das ist echt komisch :confused:
Romanday
02-02-2007, 18:22
Prima Idee, hab ich gerade probiert. Leider seh ich dann in der Email das <br> und keinen Zeilenumbruch...Herje...das ist echt komisch :confused:
Welches eMail Programm benutzt Du?
Las dir in deinem eMail Programm mal den reinen Nachrichtentext deiner eMail anzeigen.
Sende dir mal eine eMail mit einigen \n.
Im Nachrichtentext steht ist entweder \n oder es ist ein Zeilenumbruch zu sehen.
Damit kannst Du testen ob \n überhaupt von deinem eMail Programm
interpretiert wird.
undefined
03-02-2007, 08:16
Also ich habe es oben schon mal geschrieben, dann jetzt noch mal und ganz Fett header() Wenn du nicht den richtigen Header setzt kann das nicht gehen.
http://www.mrunix.de/forums/showpost.php?p=198037&postcount=6
RungeZipperer
05-02-2007, 07:42
Header definieren bringt´s auch nicht...ist ja echt alles zum Kotzen...ich hab keinen Bock mehr :mad:
undefined
05-02-2007, 09:18
Kann nicht sein. Zeige mal deinen ganzen Code.
RungeZipperer
05-02-2007, 15:37
Ja stimmt, der ganze Code ist vielleicht mal ne gute Idee:
$text1 = "Teilnehmer1; $name1; $vorname1; $mnummer1; $email1; $studgang1;";
$text2 = "Teilnehmer2; $name2; $vorname2; $mnummer2; $email2; $studgang2;";
$text3 = "Teilnehmer3; $name3; $vorname3; $mnummer3; $email3; $studgang3;";
$text4 = "Teilnehmer4; $name4; $vorname4; $mnummer4; $email4; $studgang4;";
$text5 = "Wahlversuche; $v2; $v3; $v5; $v6";
$emailtext = "$text1 \n $text2 \n $text3 \n $text4 \n $text5";
$headers="MIME-Version: 1.0\n";
$headers.="Content-Type: text/plain;\n\t charset=\"utf-8\"\n";
$headers.="Content-Transfer-Encoding: 8bit\n";
$headers.="X-Sender: webserver@meine.domain.de\n";
$headers.="X-Mailer: PHP\n";
$headers.="X-Priority: 3\n";
mail('xxx@xxx.de', 'Anmeldung', $emailtext, $headers);
undefined
05-02-2007, 16:55
Der Code ist in Ordnung, das Problem liegt bei deinem E-Mail Programm.
Was verwendest du?
RungeZipperer
06-02-2007, 07:21
Outlook 2003. Hab mal geguckt, was ich da für Einstellmöglichkeiten habe, aber irgendwie nix passendes gefunden.
So, hab jetzt meinen Import in Excel geändert und brauche daher keinen Zeilenumnbruch mehr. Trotzdem wäre es schon interessant zu wissen, warum das nicht funktioniert hat!
undefined
06-02-2007, 12:39
Weil es sich um ein Windoof handelt musst du carriage return für Windows, Mac und Unix setzen.
Also nicht nur \n sondern auch \r
Deshalb würde ich wie schon mal gepostet ein Heredoc Verwenden. ;)
http://www.php.net/manual/de/language.types.string.php#language.types.string.sy ntax.heredoc
UND bitte darauf achten!
Es ist sehr wichtig zu beachten, dass die Zeile mit dem schließenden Bezeichner keine anderen Zeichen enthält, ausgenommen möglicherweise ein Semikolon (;). Das bedeuted im Besonderen, dass der Bezeichner nicht eingerückt werden darf und es dürfen keine Leerzeichen oder Tabulatoren vor oder nach dem Semikolon stehen. Außerdem ist es wichtig, zu beachten, dass das erste Zeichen vor dem schließenden Bezeichner ein der Definition Ihres Betriebssystems entsprechender Zeilenvorschub, sein muss. Das ist zum Beispiel auf einem Macintosh ein \r.
Falls diese Regel gebrochen wird und der schließende Bezeichner nicht "sauber" ist, wird er nicht als schließender Bezeichner betrachtet und PHP wird weiter danach suchen. Wird in diesem Fall kein korrekter schließender Bezeichner gefunden, gibt es einen Parser-Fehler mit der Zeilennummer vom Ende des Skripts.
RungeZipperer
06-02-2007, 14:14
Alles klar. Werde ich beim nächsten Mal drauf achten! Vielen Dank für die Mühe :) !!!
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.