Hallöchen,
Logisch:
$message = "<html><body>$text</body></html>\r\n\r\n";
weist $message den gewünschten Text zu, bindet ihn aber nicht in $headers ein.
$message .= $file_content."\r\n";
erweitert $message um die codierte PDF Datei, bindet sie jedoch ebenfalls nicht mehr in $headers ein.
Ersetze die Zuweisung an $message an BEIDEN Stellen durch "$header .=", und ändere die malil() Funktion wie folgt ab:
if(mail($to, $subject, '', $header)) {
$msg = '<br /><br /><span>Email wurde erfolgreich gesendet</span>';
}
Beim Versenden einer mehrteiligen eMail, also z.B. wie hier einer mit Anhang, MUSS ja JEDER Teil der eMail in seinem mit dem $boundary abgegrenzten Bereich stehen. Daher bei der mail() Funktion dem 3. Parameter einen Leerstring übergeben. Was bei einer einfachen eMail da drin steht, hast du ja in $header.
Dass der Versand bei leerem $message geklappt hat, dürfte damit auch geklärt sein.
MfG
vaudi