Mail mit Anhang, PHP5
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 schreiben
Antwort 1 von DeluxeStyle vom 18.04.2020, 15:46 Options
wie sieht den dein Formular aus?
Hast du im Form Tag auch
enctype="multipart/form-data"
stehen?
Antwort 2 von micha182 vom 18.04.2020, 16:58 Options
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 vom 18.04.2020, 17:11 Options
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.