2010-07-14 8 views

Antwort

16

Wenn Zeilen in einer E-Mail terminiert werden sollen, dann ist es die Spezifikation für E-Mails, die Sie betrachten müssen, nicht das, was auf einer bestimmten Plattform verwendet wird.

Linien in E-Mail durch CRLF beendet ("\ r \ n") nach RFC2821

SMTP-Befehle und von einem Service-Erweiterung verändert, es sei denn, Nachrichtendaten, sind in "Linien" übertragen . Die Zeilen bestehen aus null oder mehr Daten Zeichen mit der Sequenz ASCII-Zeichen "CR" (Hexadezimalwert 0D) gefolgt von ASCII Zeichen "LF" (Hexadezimalwert 0A). Diese Terminierungssequenz wird in diesem Dokument als bezeichnet. Konforme Implementierungen müssen nicht erkennen oder erzeugen andere Zeichen oder Zeichenfolge als Linie Terminator

, dass diese ziemlich klar, scheint in einer E-Mail das Ende der Zeile als \ r \ n gesendet werden soll. Alles andere könnte funktionieren, aber es ist falsch, es sei denn, Sie verwenden eine "Service-Erweiterung", und wenn Sie dann sind, wissen Sie wahrscheinlich, was Sie sowieso senden sollten.

+0

+1 für die Konsultation der RFC. Jetzt, wo Sie das gepostet haben, habe ich eine vage Erinnerung daran, das einmal zu lesen. –

+0

Ehrfürchtig. Danke für die tolle Erklärung JB. – Metropolis

+1

PHP unter Linux scheint \ n zu verwenden, um Kopfzeilen zu trennen, wenn der Befehl mail() verwendet wird. Wenn Sie also \ r \ n in einem benutzerdefinierten Header verwenden, interpretieren einige Mail-Server dies als zwei Zeilenumbruchzeichen und zeigen einen Teil des Headers in der Mail an. (Entschuldigung für den Jahresspät-Kommentar, aber das ist immer noch ein Problem in PHP 5.2, siehe auch http://fluxbb.org/development/core/tickets/667/) – BurninLeo

0

\r\n ist das Newline Windows, wenn Sie Kunden sind meist Windows-Nutzer dann diese werden Sie gut tun.

Ich glaube auch, dass die meisten Nicht-Windows-E-Mail-Clients dies sowieso kompensieren werden, so dass \r\n kein Problem auf Mac oder * Nix sein sollte.

1

Nur um sicherzugehen:

PHP_EOL keine Auswirkungen auf die E-Mail an der Seite Empfänger haben. Es wird die neue Zeilenzeichenkombination verwenden, die auf dem System, auf dem Ihr PHP-Skript läuft, üblich ist.

Wenn Sie also einen Linux/Unix-Server haben, wird PHP_EOL\n ergeben und wenn Sie einen Windows-Server haben, wird es \r\n sein.

Heute sollte es nicht wichtig, dass viel, die Sie verwenden, und ich denken, dass die meisten Windows-E-Mail-Anwendungen auch nur \n verarbeiten kann (afaik auch WordPad versteht dies, ist es Notepad, die Probleme hat).

Verwandte Themen