Das Bild erscheint zwar in der mail, wird aber als "Anhang" behandelt. Es soll aber komplett eingebettet sein.
Der abschließende Text "Hier folgt weiterer Text" erscheint nicht.
Dein Format ist falsch, vergleiche mal dein Werk mit dem unten angehängten.
From: Mein Name meine@example.com
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=$TrennerThis is a multi-part message in MIME format
--$Trenner
Content-Type: text/html
Content-Transfer-Encoding: 8bit<body text='#FFFFFF' bgcolor='#000000'>
--$Trenner
Content-Type: image/gif; name=$DateinameMail
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename=$DateinameMail[Dateiinhalt]
--$Trenner--Content-Type: text/html
<b>Hier folgt weiterer Text
From: bla
MIME-Version: 1.0
Content-Type: multipart/related; boundary="MIME-Trenner"
This is a multi-part message in MIME format.
--MIME-Trenner
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body>
Eine Zeile mit Bild: <img src="cid:Bild-ID">. Da war gerade das Bild.
</body>
</html>
--MIME-Trenner
Content-Type: image/gif; name="bild.gif"
Content-Transfer-Encoding: base64
Content-ID: <Bild-ID>
Content-Disposition: inline; filename="bild.gif"
[Dateiinhalt]
--MIME-Trenner--
("MIME-Trenner" und "Bild-ID" sollten natürlich eindeutige Zeichenketten sein, so wie du sie schon benutzt hast, ich habe das hier nur der Übersichtlichkeit halber vereinfacht.) (Du hättest dir so eine Blaupause auch selbst erstellen können, indem du dir einfach selbst eine entsprechende Mail geschrieben und dann in den empfangenen Quellcode geschaut hättest.)
Wie dir auffallen sollte, werden die Bestandteile nicht zerstückelt (du hast das Bild einfach mitten in den Text gewürgt), sondern sauber getrennt und über den Wert in Content-ID bzw. die URL cid verbunden.
Zweitens folgen die Kopfdaten direkt auf den MIME-Trenner, erst dann eine Leerzeile, die den Kopf vom Inhalt trennt (bei der zweiten Hälfte bzw. beim dritten Teil hast du eine Leerzeile zu viel).
Drittens ist multipart/mixed für unabhängige Teile gedacht, bei dir hängt aber der Text mit dem Bild zusammen, daher multipart/related.
Viertens:
mail($Empfaenger, $Betreff, "", $Header);
Ich hätte nicht gedacht, dass überhaupt etwas ankommt, denn deine E-Mail hat eigentlich gar keinen Inhalt (dritter Parameter ist leer). Dem Lehrbuch nach hätten die ersten drei Zeilen des Beispiels als Parameter 4, der gesamte Rest als Parameter 3 übergeben werden sollen.
Siehe auch RFC 2045 und 2046 (insbesondere Abschnitt 5), sowie 2387 (multipart/related).