Hallo!
Es geht nicht um das gleiche Formular, mit dem ich euch in dem anderen Thread gequält habe, keine Sorge :)
Ist eigentlich bloß eine kurze Verständnisfrage.
Ich habe ein HTML-Formular mit einem Dateianhangsfeld,
Musste das PHP einer fremden Quelle entnehmen, da ich mich mit der Dateianhangsverarbeitung für den Maliversand nicht auskenne. Habe dabei recht viel unterschiedliches gesehen, mit folgendem hat es nun aber ganz gut funktioniert.
Das Problem ist nur, dass nur jeder zweite Anhang in der Email (und auch wenn man es dann abspeichert) geöffnet werden kann (Fehlermeldung, Datei sei beschädigt/nicht vollständig). Ich habe festgestellt dass dies hauptsächlich der Fall ist, wenn
1) der Dateinahme entweder Leerzeichen oder Sonderzeichen/Umlaute enthält
2) Die Dateiendung "versteckt" ist. (Zumindest beim Mac geht das, dass die Dateiendung nicht am Dateinamen angehängt ist)
Meine Frage nun; Muss man den Dateinamen oder so noch kodieren / verändern, oder hat das möglicherweise eine andere Ursache?
Danke!
Es geht nicht um das gleiche Formular, mit dem ich euch in dem anderen Thread gequält habe, keine Sorge :)
Ist eigentlich bloß eine kurze Verständnisfrage.
Ich habe ein HTML-Formular mit einem Dateianhangsfeld,
Musste das PHP einer fremden Quelle entnehmen, da ich mich mit der Dateianhangsverarbeitung für den Maliversand nicht auskenne. Habe dabei recht viel unterschiedliches gesehen, mit folgendem hat es nun aber ganz gut funktioniert.
Das Problem ist nur, dass nur jeder zweite Anhang in der Email (und auch wenn man es dann abspeichert) geöffnet werden kann (Fehlermeldung, Datei sei beschädigt/nicht vollständig). Ich habe festgestellt dass dies hauptsächlich der Fall ist, wenn
1) der Dateinahme entweder Leerzeichen oder Sonderzeichen/Umlaute enthält
2) Die Dateiendung "versteckt" ist. (Zumindest beim Mac geht das, dass die Dateiendung nicht am Dateinamen angehängt ist)
Meine Frage nun; Muss man den Dateinamen oder so noch kodieren / verändern, oder hat das möglicherweise eine andere Ursache?
Danke!
PHP:
$an = '..';
$betreff = "...";
$emailnachricht = '....';
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file']['tmp_name'])));
$filename = $_FILES['file']['name'];
$boundary =md5(date('r', time()));
$headers = "From: [email protected]\r\nReply-To: [email protected]";
$headers .= "\r\nMIME-Version: 1.0\r\nContent-Type: multipart/mixed; boundary=\"_1_$boundary\"";
$message="This is a multi-part message in MIME format.
--_1_$boundary
Content-Type: multipart/alternative; boundary=\"_2_$boundary\"
--_2_$boundary
Content-Type: text/html; charset=\"UTF-8\"
Content-Transfer-Encoding: 7bit
$emailnachricht
--_2_$boundary--
--_1_$boundary
Content-Type: application/octet-stream; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--_1_$boundary--";
mail($an, $betreff, $message, $headers);