Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Mail mit Anhang, PHP5





Frage

Hallo zusammen, ein paar Stündchen schon an einem Script für ein webformular, mit dem man emails über ein Webformular versenden kann, inkl. Anhang. Viele Lösungen habe ich schon gefunden, einige funktionieren auch, aber die Anhänge sind dann meist nur 300 Byte groß. Hier mal mein Code <?php $file = $_FILES['attachment']['name']; $file_name = $_FILES['attachment']['name']; $from = "email@adresse.de"; $to = "..."; $message = "Hier steht dann die Nachricht der Mail"; $boundary = strtoupper(md5(uniqid(time()))); $mail_header = "From:Test <$from>\n"; $mail_header .= "MIME-Version: 1.0"; $mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary"; $mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format"; $mail_header .= "\n--$boundary"; $mail_header .= "\nContent-Type: text/plain"; $mail_header .= "\nContent-Transfer-Encoding: 8bit"; $mail_header .= "\n\n$message"; $file_content = fread(fopen($file,"r"),filesize($file)); $file_content = chunk_split(base64_encode($file_content)); $mail_header .= "\n--$boundary"; $mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\""; $mail_header .= "\nContent-Transfer-Encoding: base64"; $mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\""; $mail_header .= "\n\n$file_content"; $mail_header .= "\n--$boundary--"; mail($to,"Betreff",$message,$mail_header); ?> Könnte mir vielleicht jemand einen Tip geben, wieso das nicht funktioniert? Freundliche Grüße, Micha

Antwort 1 von DeluxeStyle

wie sieht den dein Formular aus?
Hast du im Form Tag auch
enctype="multipart/form-data"
stehen?

Antwort 2 von micha182

Das ganze Formular zu posten wäre etwas lang, aber ja, enctype habe ich entsprechend drinstehen.

Muss man php vielleicht igrnediwe die Größe der Datei vorher mitteilen?

Unter php4 ist das alles ja viel detailierter als unter php5...

Antwort 3 von Supermax

Alles ab
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
gehört in den Message-Body, nicht in den Header; auch wenn vermutlich alles nach dem doppelten Zeilenvorschub ohnehin als Message Body behandelt werden dürfte.