Hello,
$data = chunk_split(base64_encode($dat['data']), .......); // <-- Umbruch?
$content.= "--".$mime_boundary."\r\n";
$content.= "Content-Disposition: attachment;\r\n";
$content.= "\tfilename="".$dat['name']."";\r\n";
$content.= "Content-Length: .".$dat['size'].";\r\n";
Bezieht sich Content-Length nicht auf die Anzahl zu übertragener Bytes?
Du beziehst es aber auf den Content in decodierter Form.
Eine weitere Fehlerquelle sehe ich darin, wie die Übertragung ausgeführt wird.
Benutzt Du die mail()-Funktion auf einem Linux-Host? Dann ist diese assoziiert mit (verlinkt auf) ein(em) Script, dass meistens sendmail-artig arbeitet. Dann will dieses Script aber die Zeilenumbrüche selber von "\n" auf "\r\n" umbauen.
In diesem Falle solltest Du durchgängig nur "\n" benutzen.
Das Script macht dann die RFC-konforme Version daraus.
Wenn die Übertragung aber durch direkte Übergabe an den SMTP-Service auf Deinem Host stattfindet 8also auf WinDOSen ist das meistens so), dann musst Du die Zeilenumbrüche richtig codieren.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg