Heuj 
Nou probeer ik met mail() bijlages te versturen, dit blijkt toch wat lastiger dan verwacht, voornamelijk omdat ik d'r al 2 uur mee bezig ben.
Van de 4 gevonden voorbeeldscripts waren d'r 3 compleet bagger vanwege notices, gebrek aan superglobals enzo ...
Kom ik uiteindelijk een script tegen dat d'r redelijk goed uit ziet. Na een beetje aanpassing van 't script kreeg ik dit:
Wat d'r wel lukt:
- Mail versturen
- Bijlage meesturen (Afbeelding: 3.jpg)
Wat d'r niet lukt:
- Afbeelding correct laten laden, ik krijg een rood kruisje, ook als ik de afbeelding opsla en open in bijv. IE.
Vraagjes:
- 't Type bestand is image/pjpeg, geen text/html of text/plain, dus moet $encoding toch base64 zijn ?
- Weet iemand wat ik fout doe ? Volgens mij doe ik -iets- fout met de headers, maar kep geen ervaring met bijlages, dus kweet 't niet
Alvast bedankt !
Nou probeer ik met mail() bijlages te versturen, dit blijkt toch wat lastiger dan verwacht, voornamelijk omdat ik d'r al 2 uur mee bezig ben.
Van de 4 gevonden voorbeeldscripts waren d'r 3 compleet bagger vanwege notices, gebrek aan superglobals enzo ...
Kom ik uiteindelijk een script tegen dat d'r redelijk goed uit ziet. Na een beetje aanpassing van 't script kreeg ik dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| <? if(isset($_FILES["bijlage"]) == TRUE) { $van = "JPeetje"; $aan = "mijn@email.adres"; $antwoord_naar = "mijn@2e_email.adres"; $betreft = "bijlage test gedoe"; $header = "F-r-o-m: " . $van . " \n" . "Reply-to: " . $antwoord_naar . " \n"; // 't Forum gaat nogal vaag om met 'From' ... $bericht = "Test ..."; $encoding = "base64"; $fp = @fopen($_FILES["bijlage"]["tmp_name"],"r"); if($fp == FALSE) { die("Er trad een fout op bij het inlezen van de bijlage.\n<br>Het script werd vroegtijdig beeindigd."); } $file_content = fread($fp,filesize($_FILES["bijlage"]["tmp_name"])); $file_content = chunk_split(base64_encode($file_content)); $boundary = strtoupper(md5(uniqid(time()))); //unieke boundary aanmaken //Algemene header -> het is een MIME mail $header .= "MIME-version: 1.0\n"; $header .= "Content-Type: multipart/mixed;\n"; $header .= "\tboundary=" . $boundary . "\n\n"; //Header voor het bericht $header .= "--" . $boundary . "\n"; $header .= "Content-Type: text/plain;\n"; $header .= "\tcharset=\"iso-8859-1\"\n"; $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; //De body (bericht) weergeven $header .= $bericht . "\n\n"; //Header voor het attachment $header .= "--" . $boundary . "\n"; $header .= "Content-Type: " . $_FILES["bijlage"]["type"] . "\n"; // $header .= "\tname=\"" . $_FILES["bijlage"]["name"] . "\"\n"; $header .= "Content-Transfer-Encoding: " . $encoding . "\n"; $header .= "Content-Disposition: attachment;\n"; $header .= " filename=\"" . $_FILES["bijlage"]["name"] . "\"\n\n"; $header .= $file_content . "\n\n"; //Invoegen attachment $header .= "--" . $boundary . "--"; //Afsluiten van de mail door de boundary nogmaals te plaatsen if(mail($aan,$betreft,$bericht,$header) == TRUE) { echo "Mail succesvol verstuurd !"; echo "<br><br><b>Headers: </b><br><br><pre>" . $header . "</pre>"; } else { echo "\nKon geen mail versturen"; } } else { ?> <form enctype="multipart/form-data" action="<? echo $_SERVER["PHP_SELF"]; ?>" method="POST"> <input type="file" name="bijlage"><input type="submit" value="Go !"></form> <? } ?> |
Wat d'r wel lukt:
- Mail versturen
- Bijlage meesturen (Afbeelding: 3.jpg)
Wat d'r niet lukt:
- Afbeelding correct laten laden, ik krijg een rood kruisje, ook als ik de afbeelding opsla en open in bijv. IE.
Vraagjes:
- 't Type bestand is image/pjpeg, geen text/html of text/plain, dus moet $encoding toch base64 zijn ?
- Weet iemand wat ik fout doe ? Volgens mij doe ik -iets- fout met de headers, maar kep geen ervaring met bijlages, dus kweet 't niet
Alvast bedankt !