Zeilenumbruch bei E-Mail per PHP
![](/uploads/default_avatar/thumb/missing.png)
- php
0 Ashura0 Ingo Siemon
0 Ashura0 Ingo Siemon
0 Ashura0 Ingo Siemon
0 Ashura
0 Ingo Siemon
1 maulwurf0 Ashura0 Maulwurf
0 Ingo Siemon
0 Maulwurf
0 Joachim
0 Klawischnigg
Hallo
Folgender Code:
$herkunft = "Referer: " . $HTTP_REFERER . "Angeforderte Seite: " . htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES);
mail("xx@meinedomain.de", "Fehler", $herkunft, $headers);
Wie bekomme ich denn da nun Zeilenumbrüche nach "Referer: "
und "Angeforderte Seite: " hinein?
Ich habe es mit /n versucht, das klappt aber nicht.
Der Text der E-Mail soll dann so aussehen:
Referer:
blablablabla
Angeforderte Seite:
blablablabla
Da ich mir nun schon ne Weile einen Wolf suche,
würde ich mich sehr freuen, wenn mir jemand mal einen
Schlag vor den Kopp geben könnte, damit ich weis
wonach ich suchen muss ;-)
Gruß
Ingo
Hallo Ingo.
Wie bekomme ich denn da nun Zeilenumbrüche nach "Referer: "
und "Angeforderte Seite: " hinein?
Ich habe es mit /n versucht, das klappt aber nicht.
Klar, du suchst ja auch nicht die Zeichenkette „/n“ sondern das Steuerzeichen „\n“ auch L(ine)F(eed) genannt.
(Der Backslash dient stets dem Maskieren von Zeichen.)
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo Ashura
Klar, du suchst ja auch nicht die Zeichenkette „/n“ sondern das Steuerzeichen „\n“ auch L(ine)F(eed) genannt.
(Der Backslash dient stets dem Maskieren von Zeichen.)
Ups, klar, das war aber nur ein Schreibfehler in meinem Posting.
Ich habe es natürlich mit „\n“ versucht.
Aber das klappt eben nicht.
Gruß
Ingo
Hallo Ingo.
Ich habe es natürlich mit „\n“ versucht.
Aber das klappt eben nicht.
Wie sieht der vollständige Code deiner Mailfunktion aus? (Mit einem Beispieltext, wie du ihn versandt haben möchtest.)
Und hast du in deinem Mailclient die Plaintext-Ansicht aktiviert?
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo
Der Code sieht so aus:
<?php
$herkunft = "Referer:\n" . $HTTP_REFERER . "\n\nAngeforderte Seite:\n" . htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES);
$headers .= 'From:' . "xxx@mainedomain.xx" . "\n";
$headers .= "Content-type: text/html\n";
mail("xxx@mainedomain.xx", "Fehler", $herkunft, $headers);
?>
Die Mail soll so versandt werden:
Referer:
http://www.trallala.de/trallalu/links.htm
Angeforderte Seite:
/_Test2/listen/modelle-erotik-a.htm
Gruß
Ingo
Hallo Ingo.
$herkunft = "Referer:\n" . $HTTP_REFERER . "\n\nAngeforderte Seite:\n" . htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES);
Meinst du nicht eigentlich $_SERVER['HTTP_REFERER'] an Stelle von $HTTP_REFERER?
~~~php
$headers .= 'From:' . "xxx@mainedomain.xx" . "\n";
$headers .= "Content-type: text/html\n";
Du hängst hier zwei mal Inhalte an $headers an, doch wo wird diese Variable initialisiert?
> Die Mail soll so versandt werden:
Du hast [error_reporting](http://de2.php.net/manual/de/function.error-reporting.php) auf E\_ALL gestellt?
Du lässt dir die Mail als Plaintext in deinem Mailclient anzeigen?
Einen schönen Dienstag noch.
Gruß, Ashura
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
[<mathbr:del.icio.us/>](http://del.icio.us/mathbr) [<mathbr:w00t/>](http://w00t.noctus.net)
Hallo
Meinst du nicht eigentlich $_SERVER['HTTP_REFERER'] an Stelle von $HTTP_REFERER?
Ja.
Du hängst hier zwei mal Inhalte an $headers an, doch wo wird diese Variable initialisiert?
Ups ja, also so:
$headers = 'From:' . "mail@spaceart.de" . "\n";
$headers .= "Content-type: text/html\n";
Du hast error_reporting auf E_ALL gestellt?
Das übersteigt meine PHP-Fähigkeiten leider noch.
Ich fange das gerade erst an.
Ich habe mir den Link mal angschaut,
aber das verstehe ich leider nicht.
Ich habe mal einfach "error_reporting(E_ALL);" als letzte Zeile
in den PHP-Code geschrieben. Aber da wird nichts angezeigt.
Du lässt dir die Mail als Plaintext in deinem Mailclient anzeigen?
Ja.
Gruß
Ingo
Hallo Ingo.
Ich habe mal einfach "error_reporting(E_ALL);" als letzte Zeile
in den PHP-Code geschrieben. Aber da wird nichts angezeigt.
Ja, jetzt wird da nichts mehr angezeigt. Zuvor hättest du folgendes erhalten:
Notice: Undefined variable: HTTP_REFERER in … on line …
Notice: Undefined variable: headers in … on line …
Du lässt dir die Mail als Plaintext in deinem Mailclient anzeigen?
Ja.
Tja, dann weiß ich leider kaum noch einen Rat.
Kannst du mir einmal eine solche Mail an meine Adresse zuschicken? Ich möchte sehen, ob die Zeilenumbrüche korrekt übertragen werden.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo nochmal
Ich habs!
Bisher: $headers .= "Content-type: text/html\r\n";
Nun: $headers .= "Content-type: text\r\n";
So klappts.
Danke für Eure nette und schnelle Hilfe!
Gruß
Ingo
Hi,
Der Code sieht so aus:
<?php
$herkunft = "Referer:\n" . $HTTP_REFERER . "\n\nAngeforderte Seite:\n" . htmlspecialchars($_SERVER['REQUEST_URI'], ENT_QUOTES);
$headers .= 'From:' . "xxx@mainedomain.xx" . "\n";
$headers .= "Content-type: text/html\n";
mail("xxx@mainedomain.xx", "Fehler", $herkunft, $headers);
?>
>
Zwei Anmerkungen:
1\. Laut PHP Manual sollten Angaben in $headers durch "\r\n" getrennt werden
also
$headers .= 'From:' . "xxx@mainedomain.xx" . "\r\n";
> $headers .= "Content-type: text/html";
2\. Ich habe es nur geschaft in dem ich eine Tabelle aufgebaut habe
also
$herkunft = "<table><tr><td>Referer:</td></tr>" . "<tr><td>" .$HTTP\_REFERER . "</td></tr><tr><td>Angeforderte Seite:</td></tr><tr><td>" . htmlspecialchars($\_SERVER['REQUEST\_URI'], ENT\_QUOTES). "</td></tr></table>;
Nicht elegant aber es klappt einwandfrei
Gruss
Maulwurf
Hallo maulwurf.
- Laut PHP Manual sollten Angaben in $headers durch "\r\n" getrennt werden
Absolut wichtiger Hinweis.
- Ich habe es nur geschaft in dem ich eine Tabelle aufgebaut habe
[…]Nicht elegant aber es klappt einwandfrei
Nicht nur nicht elegant, sondern praktisch überflüssig und bei einigen Clients sogar problematisch. Nicht jeder Mailclient kann / soll / darf HTML in E-Mails interpretieren.
Sofern die Zeilenumbrüche korrekt in der E-Mail versandt werden (Quelltext der Mail anschauen), kann nur noch ein (Konfigurations)Fehler im Mailclient vorliegen.
Einen schönen Dienstag noch.
Gruß, Ashura
Hi,
Sofern die Zeilenumbrüche korrekt in der E-Mail versandt werden (Quelltext der Mail anschauen), kann nur noch ein (Konfigurations)Fehler im Mailclient vorliegen.
Siche hängt es von Mailcient ab. In meinen Fall war Outlook der Empfänger. Nach viel rumprobieren war diese absolut schweinische Lösung (ohne die Schweine beleidigen zu wollen) die einzige die geholfen hat
Gruss
Maulwurf
Moin!
Sofern die Zeilenumbrüche korrekt in der E-Mail versandt werden (Quelltext der Mail anschauen), kann nur noch ein (Konfigurations)Fehler im Mailclient vorliegen.
Siche hängt es von Mailcient ab. In meinen Fall war Outlook der Empfänger. Nach viel rumprobieren war diese absolut schweinische Lösung (ohne die Schweine beleidigen zu wollen) die einzige die geholfen hat
Hast du nicht <br> ausprobiert?
- Sven Rautenberg
Hi,
Hast du nicht <br> ausprobiert?
doch aber es hat nichts gebracht. Outlook reagiert etwas merkwürdig.
Es kann aber sein, das es an der Einstellungen liegt(Firmeninternes Mail)
gruss
Maulwurf
Hallo Maulwurf
- Laut PHP Manual sollten Angaben in $headers durch "\r\n"
getrennt werden
OK, das habe ich korrigiert.
Danke für den Hinweis.
Nicht elegant aber es klappt einwandfrei
Aber das müsste doch auch ohne Tabelle machbar sein.
Vor allem, weil ich keine html-Mail versenden will.
Gruß
Ingo
Hi,
Aber das müsste doch auch ohne Tabelle machbar sein.
Vor allem, weil ich keine html-Mail versenden will.
warum dann Content-type: text/html anstatt Content-type: text/plain?
Gruss
Maulwurf
Lieber Maulwurf
warum dann Content-type: text/html anstatt Content-type: text/plain?
Yep, genau das war die Lösung.
Danke und Gruß aus Münster
Ingo
Hi,
$headers .= "Content-type: text/html\n";
$headers .= "Content-type: text/plain\r\n";
wenns kein html sein soll...
Gruesse, Joachim
Lieber Joachim
$headers .= "Content-type: text/html\n";
$headers .= "Content-type: text/plain\r\n";
wenns kein html sein soll...
Ja, das ar genau die Lösung.
Danke.
Gruß
Ingo
Hi there,
Wie bekomme ich denn da nun Zeilenumbrüche nach "Referer: "
und "Angeforderte Seite: " hinein?
Ich habe es mit /n versucht, das klappt aber nicht.
am besten, Du hängst mit chr(13).chr(10) eine CarriageReturn Linefeed an , als $string.chr(13).chr(10) bewirkt einen Zeilenumbruch...
Moin!
am besten, Du hängst mit chr(13).chr(10) eine CarriageReturn Linefeed an , als $string.chr(13).chr(10) bewirkt einen Zeilenumbruch...
Ja, das ist die Variante für Leute, die keinen Gegenschrägstrich auf ihrer Tastatur haben. Obiges kannst du billiger haben:
$string . "\xD\xA"
Viele Grüße,
Robert
Moin!
am besten, Du hängst mit chr(13).chr(10) eine CarriageReturn Linefeed an , als $string.chr(13).chr(10) bewirkt einen Zeilenumbruch...
Ja, das ist die Variante für Leute, die keinen Gegenschrägstrich auf ihrer Tastatur haben. Obiges kannst du billiger haben:
$string . "\xD\xA"
Und das wiederum geht noch einfacher mit
$string . "\r\n"
\r ist in PHP definiert als ASCII 13.
\n ist in PHP definiert als ASCII 10.
- Sven Rautenberg
Moin!
$string . "\xD\xA"
Und das wiederum geht noch einfacher mit
$string . "\r\n"
\r ist in PHP definiert als ASCII 13.
\n ist in PHP definiert als ASCII 10.
Das ist gut zu wissen, ich dachte, \n wäre wie in C plattform-abhängig.
Viele Grüße,
Robert