Tom: Universelles Mailscript für Linuxe und WinDOSen durch PHP_EOL

Beitrag lesen

Hello,

dies ist übrigens ein exquisites Beispiel für die Verwendung der Konstante PHP_EOL, von der in einem anderen Thread bereits die rede war:

  
$header = '';  
$header .= 'MIME-Version: 1.0'.PHP_EOL;  
$header .= 'Content-type: text/html; charset=utf-8' . PHP_EOL;  
$header .= 'Content-Transfer-Encoding: 8bit' . PHP_EOL;  
$header .= 'From: '. mail_header_encode($sender) . PHP_EOL;  
$header .= 'Delivered-To: ' . mail_header_encode($empfaenger);  

Außerdem müssen alle Eingaben im Header entsprechend "kastriert" und passend codiert werden (keine Zeichen über Codepoint 0xFF), was ich hier mal durch die erfundene Funktion mail_header_encode() andeute.

In Mails muss laut RFC 2822 und anderen immer 'CR LF' als Zeilenumbruch verwendet werden. Auf Linux-Systemen wird dies jedoch durch das Zusammenspiel von PHP und dem Script, dem der Mailversand obliegt, bewerkstelligt. In allen Headern der Mail wird automatisch "\n" durch "\r\n" ersetzt. Man darf daher in den Headern deshalb nur "\n" benutzen.

Auf WinDOSen benutzt PHP bei mail() automatisch den Port 25 (SMTP-Server) für den Mailversand und übergibt bereits eine fertige Mail. Daher _muss_ auf WinDOSen immer "\r\n" als Zeilenumbruch benutzt werden.

Die Konstante PHP_EOL ist entsprechend geladen, und sollte daher auch benutzt werden, damit PHP-Scripte ohne Nachbasteleien von WinDOSen auf Linuxhosts übertragen werden können.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de