und (eMail): Warum kein Zeilenvorschub mit \r\n bei mail()?
tox
- php
Hallo,
ich hab ein XP System mit dem ich per PHP mail() Textmails an einen Red Hat Server schicke, damit dieser sie verschickt. Das tut er auch. Mein Thunderbird zeigt mir diese Mails aber ohne Zeilenvorschub an, etwa so:
Zeile 1\r\nZeile 2\r\nZeile 3\r\n usw.
anstatt:
Zeile 1
Zeile 2
Zeile 3
Woran kann das liegen? Wie kann ich erreichen, dass die Mails ordentlich dargestellt werden?
Gibt es eine Möglichkeit die Rohversion eines solchen Mails z.B. per Notepad anzusehen? Sozusagen bevor Thunderbird seine Fingerchen da reinmacht.
Danke und Gruss
Mein Thunderbird zeigt mir diese Mails aber ohne Zeilenvorschub an, etwa so:
Zeile 1\r\nZeile 2\r\nZeile 3\r\n usw.
Wenn in der Mail tatsächlich "Backslash-R-Backslash-N" steht, dann hast du es hingekriegt, durch die falschen Anführungszeichen um den String die Sonderbedeutung dieser Zeichen zu vereiteln - und dein String enthält anstelle des Zeilenumbruchzeichens (ASCII-Codes 13 und 10) eben die Buchstaben.
dann hast du es hingekriegt, durch die falschen Anführungszeichen um den String die Sonderbedeutung dieser Zeichen zu vereiteln
Hab ich. Danke. War mit Hochkommas gemacht. Jetzt schnurrt es. Man lernt echt nie aus.
Das heisst: Nur ein "\r\n" ist auch ein richtiger Zeilenumbruch.
Danke und Gruss
Hallo tox,
Das heisst: Nur ein "\r\n" ist auch ein richtiger Zeilenumbruch.
Nein, eigentlich ist bereits \n ein "richtiger" Zeilenumbruch. Unter Windows kommt noch ein \r (Wagenrücklauf) davor. Interpoliert wird er in PHP allerdings nur innerhalb von double quotes, genauso wie es bei Variablen der Fall ist.
Beste Grüße
Richard
Hallo Richard,
Nein, eigentlich ist bereits \n ein "richtiger" Zeilenumbruch. Unter Windows kommt noch ein \r (Wagenrücklauf) davor. Interpoliert wird er in PHP allerdings nur innerhalb von double quotes, genauso wie es bei Variablen der Fall ist.
Soll heissen, wenn ich z.B. auf einer Linuxmaschine mein PHP laufen hätte, dann würde ein \n auch tun. Richtig?
Gibt es sonst noch einen Unterschied zwischen Hochkommas und Anführungszeichen in PHP?
Tolle Infos übrigens, danke.
Und Gruss
Hallo tox.
Gibt es sonst noch einen Unterschied zwischen Hochkommas und Anführungszeichen in PHP?
Siehe Handbuch.
Einen schönen Montag noch.
Gruß, Mathias
Hi Forum,
Soll heissen, wenn ich z.B. auf einer Linuxmaschine mein PHP laufen hätte, dann würde ein \n auch tun. Richtig?
ich benutze wenn ich html-quelltext mit php(echo) ausgebe immer nur \n am Zeilenende wenn ich nun den Quelltext im IE anzeigen lassen sind ganz normale zeilenumbürche da also denk ich ma reicht \n auch unter windows.
MFG Davok`xarden
ich benutze wenn ich html-quelltext mit php(echo) ausgebe immer nur \n am Zeilenende wenn ich nun den Quelltext im IE anzeigen lassen sind ganz normale zeilenumbürche da also denk ich ma reicht \n auch unter windows.
Es hängt davon ab, was man macht.
Beim Mailversand gelangt der ausgegebene Text zunächst an einen echten Mailserver. Und hinsichtlich der notwendigen Zeilenumbrüche in Mails gibt es Vorschriften. Diese Vorschriften unterscheiden sich von den Vorschriften, die Zeilenumbrüche in HTML-Seiten definieren.
Hallo,
Soll heissen, wenn ich z.B. auf einer Linuxmaschine mein PHP laufen hätte, dann würde ein \n auch tun. Richtig?
nein. Es würde im Dialog mit vielen Servern wahrscheinlich funktionieren, weil sie fehlertolerant sind, wäre aber nicht zuverlässig. Denn es ist nun einmal im Standard festgelegt, dass Headerzeilen in Mails mit \r\n (0x0D, 0x0A) abgeschlossen werden (das gilt übrigens auch für HTTP-Header).
So long,
Martin
Hallo Martin,
nein. Es würde im Dialog mit vielen Servern wahrscheinlich funktionieren, weil sie fehlertolerant sind, wäre aber nicht zuverlässig. Denn es ist nun einmal im Standard festgelegt, dass Headerzeilen in Mails mit \r\n (0x0D, 0x0A) abgeschlossen werden (das gilt übrigens auch für HTTP-Header).
Alles klar. Hast Du noch den Namen des Standards?
Danke und Gruss
Hallo,
[...] Denn es ist nun einmal im Standard festgelegt, dass Headerzeilen in Mails mit \r\n (0x0D, 0x0A) abgeschlossen werden (das gilt übrigens auch für HTTP-Header).
Alles klar. Hast Du noch den Namen des Standards?
oh, Moment ... ja.
Für Mails: RFC 2821, speziell Abschnitt 2.3.7 "Lines".
Für HTTP: RFC 2616, Abschnitt 2.2 "Basic Rules"
Das gilt für einige andere Internet-Protokolle entsprechend.
So long,
Martin
Sogar mit Links.
Herzlichen Dank
und Gruss
dann hast du es hingekriegt, durch die falschen Anführungszeichen um den String die Sonderbedeutung dieser Zeichen zu vereiteln
Hab ich. Danke. War mit Hochkommas gemacht. Jetzt schnurrt es. Man lernt echt nie aus.
Das heisst: Nur ein "\r\n" ist auch ein richtiger Zeilenumbruch.
Steht auch so in der Doku, und sollte zum Allgemeinwissen eines jeden PHP-Programmierers gehören.