dedlfix: Abschlusszeichen von Header-Zeilen

Beitrag lesen

echo $begrüßung;

Denke aber trotzdem an den Abschluss jeder Headerzeile mit "\r\n"
Das ist vorgeschrieben und manche MTA's nehmen das auch sehr ernst.

Dieses Strengdraufachten kann man sich im Prinzip schenken, denn PHP macht es intern wieder zunichte, weil es da einfach \n beim Zusammenbau von To, Subject, den zusätzlichen Headerzeilen und dem Mail-Body verwendet. Siehe http://cvs.php.net/viewvc.cgi/php-src/ext/standard/mail.c?annotate=1.96 - Zeile 235ff. (Dass \n hier wirklich nur für das Linefeed steht, kann man weiter oben in Zeile 48 sehen, denn da wird es ebenfalls und zusammen mit dem \r verwendet. An der Stelle wäre es nicht sehr sinnig, wenn \n für CRLF stünde.)

Nähme PHP im Code der mail()-Funktion \r\n zum Zusammenbau, wäre das auch kontraproduktiv zur Handbuchempfehlung "If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used)."

Möchte man also unter allen Umständen stets \r\n verwenden, muss man To und Subject auf \r enden lassen und den letzten Zusatzheader (oder das Subject, wenn man keine verwendet) mit \r\n\r abschließen. Somit hat man dann zumindest ein \r\n\r\n\n als Trenner. Wie sich allerdings das zusätzliche \n auf die MTAs auswirkt weiß ich nicht. Vermutlich erzeugt das nur eine Leerzeile am Anfang des Mailtexts.

echo "$verabschiedung $name";