Hello,
ich weiß nicht, ob es eine so gute Idee ist, die Darstellung des Zeilenumbruchs dem Server zu überlassen: Die meisten Server sind Unix-basiert und verwenden ein einfaches Linefeed (0x0A) als Zeilenumbruch; RFC2822 verlangt aber CR/LF (0x0D, 0x0A) als Zeilenumbruch.
Das ist nur die halbe Wahrheit und führ tdaher zu Fehlern.
Die Funktion Mail() kann nur als Helferlein für den Programmierer angesehen werden.
Es kommt auf die Art und Weise an, wie mail() die email zum MTA transportiert.
Auf Unix-Hosts wird hierfür meistens ein sendmail-Script verwendet. Dieses ersetzt dann das Executable sendmail. Ob dann hinten dran qmail, exim, postfix oder sonstwer die Arbeit macht, ist egal.
Wesentlich ist, dass das Script JEDES der beiden Zeilenschaltungszeichen in CRLF verwandelt. Wenn also nun bereits ein CRLF geliefert wird, dann wird daraus ein CRLFCRLF, was offensichtlich dem MTA nicht behagen wird.
Ergo: für mail(), wenn die Weiterverarebitung auf einem Unix-Host mittels sendmail geschieht (in der INI ist es ja eingetragen), dann nur LF verwenden für die Separierung der Header.
Wenn jedoch Windows als OS verwendung findet, dann wird meistens der MTA direkt über Port 25 gefüttert. Dann MUSS man CRLF verwenden, um die Header zu trennen.
Soweit jedenfalls meine Kenntnisse zu diesem Problem.
Liebe Grüße
Tom vom Berg
Nur selber lernen macht schlau