Hi, ik wil graag via een formulier een email versturen met een attachment, die ik wil aangeven in een variable, (dus $attachment = "temp.xml"). Nu weet ik niet hoe ik dit zou moeten doen. Op het internet heb ik al wel het een en ander weten te oplossen, maar op dit moment werkt het alleen als je het bestand opzoekt.
Mijn php code is:
De attachment wordt via een formulier opgezocht:
[html]
<tr>
<td width="150" align="left" valign="center">
<font face="Verdana,Tahoma,Arial,Helvetica" size="2" color="#000000">
Attachement:
</font>
</td>
<td width="350" align="left" valign="center">
<input type="file" name="attachement">
</td>
</tr>
[/html]
Dit gaat gewoon perfect, het mailtje met de opgezochte attachment wordt verzonden. Maar ik wil dus dat het niet opgezocht moet worden, maar dat ik zelf aangeef hoe de file heet. Wanneer ik $attachement = "temp.xml" doe, dan werkt dit niet. Ik denk dat het iets te maken heeft met regel 14, bij "tmp_name".
Ik zou echt niet weten wat ik moet veranderen. Zou iemand mij kunnen vertellen of ik deze informatie ook ergens op het internet kan vinden? Of kan iemand mij vertellen wat ik verkeerd doe?
Mijn php code is:
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
71
72
73
74
75
76
77
| if ($action == "send") { $header = "From: " . $from . "\n"; if ($attachement != "none") { // Haal het attachement type op $type = $HTTP_POST_FILES[attachement][type]; if (($type == "text/plain") || ($type == "text/html")) $encoding = "8bit"; else $encoding = "base64"; // Haal het attachement content op $fp = @fopen($HTTP_POST_FILES[attachement][tmp_name],"r"); if (!$fp) { print "Could not open attachment for reading...<br>\n"; print "Exiting script!<br><br>"; print "No mail has been sent!"; exit; } $file_content = fread($fp,filesize($HTTP_POST_FILES[attachement][tmp_name])); // Als codering is base64 ... codeer het if ($encoding == "base64") $file_content = chunk_split(base64_encode($file_content)); // Het maken van een unieke boundary $boundary = strtoupper(md5(uniqid(time()))); // Maken van message header... $header .= "MIME-version: 1.0\n"; $header .= "Content-Type: multipart/mixed;\n"; $header .= "\tboundary= " . $boundary . "\n\n"; $header .= "This is a multi-part message in MIME format.\n\n"; // Het maken van de message body in de header $header .= "--" . $boundary . "\n"; $header .= "Content-Type: " . $ct . ";\n"; $header .= "\tcharset=\"iso-8859-1\"\n"; $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; // Het werkelijke bericht $header .= $body . "\n\n"; // Het maken van de attachement in de header $header .= "--" . $boundary . "\n"; $header .= "Content-Type: " . $type . "\n"; $header .= "Content-Transfer-Encoding: " . $encoding . "\n"; $header .= "Content-Disposition: attachment; filename=\"" . $HTTP_POST_FILES[attachement][name] . "\"\n\n"; // Werkelijke attachement $header .= $file_content . "\n\n"; $header .= "--" . $boundary . "--"; } // Als er geen attachement is... else { $header .= "Content-Type: " . $ct . ";\n"; $header .= "\tcharset=\"iso-8859-1\"\n"; $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; // Het werkelijke bericht. $header .= $body . "\n\n"; } if (@mail($to,$subject,"",$header)) { print $attachement . "<br>\n"; print "Mail sent!"; } else print "Error sending email!"; } else { |
De attachment wordt via een formulier opgezocht:
[html]
<tr>
<td width="150" align="left" valign="center">
<font face="Verdana,Tahoma,Arial,Helvetica" size="2" color="#000000">
Attachement:
</font>
</td>
<td width="350" align="left" valign="center">
<input type="file" name="attachement">
</td>
</tr>
[/html]
Dit gaat gewoon perfect, het mailtje met de opgezochte attachment wordt verzonden. Maar ik wil dus dat het niet opgezocht moet worden, maar dat ik zelf aangeef hoe de file heet. Wanneer ik $attachement = "temp.xml" doe, dan werkt dit niet. Ik denk dat het iets te maken heeft met regel 14, bij "tmp_name".
Ik zou echt niet weten wat ik moet veranderen. Zou iemand mij kunnen vertellen of ik deze informatie ook ergens op het internet kan vinden? Of kan iemand mij vertellen wat ik verkeerd doe?
[ Voor 16% gewijzigd door Verwijderd op 18-12-2002 21:49 ]