Kermit: HTML/Text-Mail versenden

Beitrag lesen

Es soll also sowohl das HTML wie auch der Text "in einem" versandt werden.

Ich mache derzeit Folgendes (Ausschnitt):
$headers = "From: ".$this->from."\r\n";
$headers .= "MIME-Version: 1.0\r\n".
"Content-Type: multipart/alternative;\n\tboundary="---"\r\n";

Die Trenngrenze zwischen den einzelnen Teilen (boundary) sollte schon etwas komplizierter sein als nur drei Striche, zum Beispiel eine schön lange Zufallszahl.

Im Inhalt der Mail wird dann zuerst das Textmail geschrieben, begonnen wird mit:

"Content-Type: text/plain;\r\n\t".
"Content-Transfer-Encoding: 8bit\r\n\r\n".
"Hier steht dann mein Plain Text Inhalt";

und danach wird dann noch der HTML-Teil angehängt:

"Content-type: text/html; charset=iso-8859-1\r\n".
"Content-Transfer-Encoding: 8bit\r\n\r\n".
"Hier steht dann mein HTML Code";

Woher soll der Empfänger wissen, wo ein Teil aufhört und der andere anfängt? Du hast die Trennung vergessen (deine drei Striche).

Ist das so überhaupt möglich? Also dass der Content-type dann nicht direkt im header steht sondern eigentlich im Msg-Text?

Das ist der Sinn der Sache. Im Kopf der Mail steht, dass es sich um eine mehrteilige Nachricht handelt (multipart), deren Teile alternativ zueinander verwendet werden können, je nachdem, welchen der Mailer hübscher findet (alternative).
Worum es sich bei den Einzelteilen handelt, steht logischerweise bei den Einzelteilen.

Das Einfachste wäre es gewesen, wenn du dir selbst eine HTML-Mail geschickt und ihren Quelltext inspiziert hättest.

Egal, so sähe es zum Beispiel richtig aus (als Quelltext):

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="--01C57257.5243A214"

This is a multi-part message in MIME format.

--01C57257.5243A214
Content-Type: text/plain; charset="iso-8859-1"

blabla

------_=_NextPart_001_01C57257.5243A214
Content-Type: text/html; charset="iso-8859-1"

<html><body>
blabla
</body></html>