Linux macht bei mail( ) zusaetzliche Zeilenumbrüche
Eddie
- php
-3 Tom
Hallo allerseits,
ich verschicke unter PHP Mails mittels mail(...) und habe Probleme mit doppelten Zeilenumbruechen.
Mein Nachrichtentext kommt teilweise aus
Unter Windows geht's ganz wunderbar, aber unter Linux (bei Puretec / 1&1) werden die Zeilenumbrueche verdoppelt. An der Eingabe kann das doch nicht wirklich liegen, oder? Der Fehler tritt naemlich unabhaengig von der Quelle auf.
Wisst ihr, was ich da tun kann?
Danke für eure Hilfe,
Eddie
Hello,
- dem Script (dort mache ich die Zeilenumbrueche mittels "\n")
MMn muss das nach RFC in allen text-Bereichen "\r\n" sein. Zumindest sind die Header-Zeilen so zu beenden. Nur innerhalb eines base64-Bereiches soll es dann wieder nur "\n" sein.
Wie groß ist denn die übermittelte Zeilenlänge?
Ich vermute mal, dass der smtp-Server da ggf. automatisch ein Line-Wrap nach 76 Zeichen einfügt. Da er das "\n" nicht als Zeilenumbruch anerkennt.
Stell mal probehalber um auf "\r\n" und achte darauf, dass Deine gesendete Zeilenlänge nicht zur groß wird. Maximale Länge ist zwar 998 Zeichen ohne LineBreak, aber der 'Convenience-Umbruch' ist meistens auf 76 Zeichen eingestellt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom
- dem Script (dort mache ich die Zeilenumbrueche mittels "\n")
MMn muss das nach RFC in allen text-Bereichen "\r\n" sein.
Nein! Es muss \015\012 sein. \n ist definiert als das oder die Zeichen die in der betreffenden Umgebung eine neue Zeile erzeugen. Du musst also explizit die Ascii-Codes der Zeichen angeben. Es gibt dazu sogar einen Feature-Artikel: http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm.
Der Artikel bezieht sich zwar auf Perl, bei PHP ist das aber auch so.
Gruss Daniela
Hello,
- dem Script (dort mache ich die Zeilenumbrueche mittels "\n")
MMn muss das nach RFC in allen text-Bereichen "\r\n" sein.
Nein! Es muss \015\012 sein. \n ist definiert als das oder die Zeichen die in der betreffenden Umgebung eine neue Zeile erzeugen. Du musst also explizit die Ascii-Codes der Zeichen angeben. Es gibt dazu sogar einen Feature-Artikel: http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm.
Der Artikel bezieht sich zwar auf Perl, bei PHP ist das aber auch so.
Danke für den Hinweis.
Darum funktioniert es in meinem Maiscript wahrscheinlich auch. Ich habe dort
define('CRLF',chr(13).chr(10)); (usw.)
drinstehen und benutze nachher nur noch die Konstanten.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello nochmal Daniela,
Nein! Es muss \015\012 sein. \n ist definiert als das oder die Zeichen die in der betreffenden
http://de.php.net/manual/en/function.mail.php ist dann also falsch?
Sollte man den leuten doch mal sagen.
An welcher Stelle ist denn die Ersetzung von "\r" und "\n" defininiert?
Wenn Du da bitte noch einen Hinweis geben könntest, wäre meine Sammlung wieder ein Stück vollständiger.
Ich kann dazu in PHP nur http://de2.php.net/language.types.string finden.
Ist das denn da auch falsch?
In welcher Schicht wird die Ersetzung durchgeführt? Im Parser oder erst in der Ausführungsebene?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom