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
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...
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.
