Emailformulier met bijlage.
http://www.phphulp.nl/php/scripts/1/262/
Helaas staat er een fout in, ook in het origineel, bekijk het voorbeeld maar. Niets meesturen levert een aantal foutmeldingen en een lege .dat- bijlage op.
De bedoeling is dat het bericht zonder bijlage niet verzonden wordt.
De code:
Ik heb een emailformulier met bijlage gemaakt aan de hand van dit voorbeeld: Helaas staat er een fout in, ook in het origineel, bekijk het voorbeeld maar. Niets meesturen levert een aantal foutmeldingen en een lege .dat- bijlage op.
De bedoeling is dat het bericht zonder bijlage niet verzonden wordt.
De code:
Code (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
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
<?php
//mail formulier voor bijlage
$email ='email@email';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//if file upload send with email as mixed
if(!empty($_FILES['file'])){
//check filesize
if($_FILES['file']['size'] < 1024*5){
$headers = "From: ".$_POST['url']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['url']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
// Wat is de maximale groote van het bestand in bytes ( 1 kb = 1000 bytes )
$max = "70000";
// Welke extensies kunnen er worden geupload ( als alles mag dan niks invullen )
$ext = "jpg JPG gif GIF png PNG";
//email bestaat uit meerdere bestanden dus vertel wat de scheidings teken is en dat het een multipart is
$headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
//we zenden een attachment mee
$headers .= "Content-Disposition: attachment\r\n";
//create body
//generenen een body. Dit is een multi part gezeik
$body.= "This is a multi-part message in MIME format.\r\n";
$body.= "\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + charater set (iso in dit geval)
$body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
//codering (7 bit)
$body.= "Content-Transfer-Encoding: 7bit\r\n";
$body.= "\r\n";
//het bericht
$body.= $_POST['url'] ."\r\n";
$body.= $_POST['titel/alt'] ."\r\n";
$body.= $_POST['img_nr'] ."\r\n";
$body.= $_POST['email'] ."\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
//codering
$body .= "Content-Transfer-Encoding: base64\r\n";
//als bijlage toegevoegd
$body.= "Content-disposition: attachment\r\n";
$body .= "\n";
//de inhoud van het bestand
$body .= chunk_split(base64_encode($bestand )) . "\r\n";
mail($email,$_POST['titel/alt'],$body,$headers);
echo 'Uw aanvraag met afbeelding is correct verzonden, na acceptatie zal uw link z.s.m. op de homepage staan';
}else{
echo 'Uw afbeelding is te groot of het formaat is onjuist. Alleen gif/jpg/png, max. 20x20 pixels <a href="free.php">overnieuw</a>';
}
}else{
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$bericht = $_POST['email'];
$bericht = $_POST['img_nr'];
$bericht = $_POST['url'];
$bericht = $_POST['titel/alt'];
mail($email,$_POST['titel/alt'],$bericht,$headers);
echo 'U heeft geen afbeelding geselecteerd om mee te sturen.';
}
}else{
//mail formulier je moet zelf het fomullier maken
?>
//mail formulier voor bijlage
$email ='email@email';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//if file upload send with email as mixed
if(!empty($_FILES['file'])){
//check filesize
if($_FILES['file']['size'] < 1024*5){
$headers = "From: ".$_POST['url']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['url']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
// Wat is de maximale groote van het bestand in bytes ( 1 kb = 1000 bytes )
$max = "70000";
// Welke extensies kunnen er worden geupload ( als alles mag dan niks invullen )
$ext = "jpg JPG gif GIF png PNG";
//email bestaat uit meerdere bestanden dus vertel wat de scheidings teken is en dat het een multipart is
$headers .= "Content-Type: multipart/mixed; boundary=\"".bound."\"\r\n";
//we zenden een attachment mee
$headers .= "Content-Disposition: attachment\r\n";
//create body
//generenen een body. Dit is een multi part gezeik
$body.= "This is a multi-part message in MIME format.\r\n";
$body.= "\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + charater set (iso in dit geval)
$body.= "Content-Type: text/plain; charset=iso-8859-1\r\n";
//codering (7 bit)
$body.= "Content-Transfer-Encoding: 7bit\r\n";
$body.= "\r\n";
//het bericht
$body.= $_POST['url'] ."\r\n";
$body.= $_POST['titel/alt'] ."\r\n";
$body.= $_POST['img_nr'] ."\r\n";
$body.= $_POST['email'] ."\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
//codering
$body .= "Content-Transfer-Encoding: base64\r\n";
//als bijlage toegevoegd
$body.= "Content-disposition: attachment\r\n";
$body .= "\n";
//de inhoud van het bestand
$body .= chunk_split(base64_encode($bestand )) . "\r\n";
mail($email,$_POST['titel/alt'],$body,$headers);
echo 'Uw aanvraag met afbeelding is correct verzonden, na acceptatie zal uw link z.s.m. op de homepage staan';
}else{
echo 'Uw afbeelding is te groot of het formaat is onjuist. Alleen gif/jpg/png, max. 20x20 pixels <a href="free.php">overnieuw</a>';
}
}else{
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$bericht = $_POST['email'];
$bericht = $_POST['img_nr'];
$bericht = $_POST['url'];
$bericht = $_POST['titel/alt'];
mail($email,$_POST['titel/alt'],$bericht,$headers);
echo 'U heeft geen afbeelding geselecteerd om mee te sturen.';
}
}else{
//mail formulier je moet zelf het fomullier maken
?>
Doe dan een formulier check. Simpel toch
Voor de een simpel, voor de ander niet. Ik ben er nu al een tijdje mee bezig maar kom er echt niet uit.
ik begrijp uit je vraag dat het mogelijk is om via dit formulier een email te versturen met een bijlage, maar dat het fout gaat als de gebruiker geen bijlage uploadt?
Gewijzigd op 16/11/2005 22:40:00 door Jan Koehoorn
Hij moet de email niet versturen als er geen bijlage bij zit...
Vitens, heb je de HTML code van het formulier?
<form action='' method='post' enctype='multipart/form-data'>
<p>
<input type="text" name="url" size="30" value="http://"> Uw website </p>
<p>
<input type="text" name="email" size="30" > Uw email-adres </p>
<p>
<input type="text" name="titel/alt" size="30"> Alt tekst (bij mouse over) </p>
<P><input type="file" name="file"></P>
<span class="label"><label for="img_nr">
<input id="img_nr" name="img_nr" size="8" class="medium" type="text" value="0 - 0"></label></span>
</p>
<p>
<span class="label"></span>
<input id="verzenden" name="verzenden" type="submit" value="aanvragen">
</p>
</form>
Ik heb ook al op jouw site gekeken, Jan bij de voorbeelden over php formcheck. Daarmee lukte het niet. In bovenstaand script moet er iets fout zitten.
ff weer onder de aandacht brengen.
Ik ben er nog steeds niet uit.........
Helaas geen hulp hier op php-hulp.
kijk anders ff op sitemasters.be of phpfreakz.nl
vitens:
Helaas geen hulp hier op php-hulp.
Hoi Vietens,
de action='' van je form is leeg.
Jan:
de action='' van je form is leeg.
de action='' van je form is leeg.
Lege action stuurt de gebruiker naar de huidige pagina terug? :)