Hello,
Vielen Dank für die Rückmeldung, ich habe es nach dem Trial and Error Prinzip versucht und bin dann doch fündig geworden:
Der Code funktioniert so, wie er hier steht, wenn man
$mime = new Mail_mime;
> durch
> ~~~php
$mime = new Mail_mime("\n");
>
ersetzt.
Erklärung laut PEAR-Manual:
Pear-Manual
siehe unter "Note".
Das ist nur die halbe Wahrheit.
Besser ist es, die Konstante PHP_EOL zu benutzen als Parameter für den Aufruf. Die passt dann wenigstens fast immer.
Zur Erläuterung:
Wenn Mails über das (Linux-)Sendmail-Script versendet werden, erwartet dieses Linux-konforme Zeilenumbrüche (LF) und ersetzt diese dann nach RFC 2822 für den Internet-Mail-Transport durch CRLF. Leider ersetzt das Script sowohl CR als auch LF durch CRLF, sodass es dann durch die Doppelung zu Fehlern führt.
Wenn man Mails über den SMTP-Server (z.B. Port 25) versendet, erwartet dieser bereits eine RFC-2822-konforme Maildatei. Diese _muss_ nun also CRLF für alle Zeilenünbrüche in den Mail-Headern verwenden. Der Versand über Port25 wird auf Windows-Systemen verwendet.
Die Konstante PHP_EOL enthält nun bei Linux-Installationen gerade LF und bei Windows-Installationen CRLF. Bei MAC konnte ich die Sachlage noch nicht überprüfen.
Wenn Du dein Script also sowohl für Linux-, als auch für Windows-Installationen lauffähig halten willst, ohne basteln zu müssen, dann benutzte die Konstante.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg