e-mail met vastgestelde bijlage
Hallo, ik heb een tijdje terug dit script hiervandaan gehaald..
Nu wil ik het iets aanpassen, zodat mensen niet kunnen bladeren naar een bijlage, maar dat standaard een bestand meegestuurd wordt..
Neem als test maar 1.jpg die staat in dezelfde dir als dit bestand..
Dit is het script:
<form action='' method='post' enctype='multipart/form-data'>
Naam:<input type='text' name='from'><br>
Email:<input type='text' name='email'><br>
Onderwerp:<input type='text' name='subject'><br>
Bestand:<input type='file' name='file'><br>
Bericht:<textarea name='bericht'></textarea><br>
<input type="submit"value="Verzenden">
</form>
Wie kan me helpen?
Nu wil ik het iets aanpassen, zodat mensen niet kunnen bladeren naar een bijlage, maar dat standaard een bestand meegestuurd wordt..
Neem als test maar 1.jpg die staat in dezelfde dir als dit bestand..
Dit is het script:
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
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
<?php
//mail formulier voor bijlage
//ontvanger
$email ='[email protected]';
//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*50){
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//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";
//readfile
$fp = fopen($_FILES['file']['tmp_name'],'r');
$bestand = fread($fp,$_FILES['file']['size']);
fclose($fp);
//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['bericht'] ."\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['subject'],$body,$headers);
echo 'Email (Met een bijlage) is verzonden';
}else{
echo 'Bestands groote is te groot';
}
}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['bericht'];
mail($email,$_POST['subject'],$bericht,$headers);
echo 'Email (Zonder een bijlage) is verzonden';
}
}else{
//mail formulier je moet zelf het fomullier maken
?>
//mail formulier voor bijlage
//ontvanger
$email ='[email protected]';
//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*50){
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//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";
//readfile
$fp = fopen($_FILES['file']['tmp_name'],'r');
$bestand = fread($fp,$_FILES['file']['size']);
fclose($fp);
//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['bericht'] ."\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['subject'],$body,$headers);
echo 'Email (Met een bijlage) is verzonden';
}else{
echo 'Bestands groote is te groot';
}
}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['bericht'];
mail($email,$_POST['subject'],$bericht,$headers);
echo 'Email (Zonder een bijlage) is verzonden';
}
}else{
//mail formulier je moet zelf het fomullier maken
?>
<form action='' method='post' enctype='multipart/form-data'>
Naam:<input type='text' name='from'><br>
Email:<input type='text' name='email'><br>
Onderwerp:<input type='text' name='subject'><br>
Bestand:<input type='file' name='file'><br>
Bericht:<textarea name='bericht'></textarea><br>
<input type="submit"value="Verzenden">
</form>
Wie kan me helpen?
Gewijzigd op 16/11/2005 20:45:00 door Mark Vergroesen
ik heb zelf zitten vogelen, en kwam eigenlijk vast te zitten op deze regel:
$body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
Ik had dit ervan gemaakt:
$body .= "Content-Type: application/octet-stream; name=".$bestand."\r\n"; en dat werkte niet..
Maar ik denk dat er meer fouten inzaten, dus kan iemand kijken naar het origineel, en daarvan iets aanpassen zodat het wel werkt?
Ik blijf intussen proberen..
$body .= "Content-Type: application/octet-stream; name=".$_FILES['file']['name']."\r\n";
Ik had dit ervan gemaakt:
$body .= "Content-Type: application/octet-stream; name=".$bestand."\r\n"; en dat werkte niet..
Maar ik denk dat er meer fouten inzaten, dus kan iemand kijken naar het origineel, en daarvan iets aanpassen zodat het wel werkt?
Ik blijf intussen proberen..
Hoi Mark,
wat gebeurt er eigenlijk precies als het formulier verzonden wordt? Wat voor meldingen krijg je?
wat gebeurt er eigenlijk precies als het formulier verzonden wordt? Wat voor meldingen krijg je?
ik zal vanavond nog even mijn script posten zoals ik het had aangepast (ben niet thuis nu).. ik kreeg geen foutmeldingen, en de bijlage was alleen een .dat file..
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
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
<?php
//mail formulier voor bijlage
//ontvanger
$email ='[email protected]';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//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";
//readfile
$filename = "./1.jpg";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
//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['bericht'] ."\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=".$contents."\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($contents )) . "\r\n";
mail($email,$_POST['subject'],$body,$headers);
echo 'Email (Met een bijlage) is verzonden';
?>
//mail formulier voor bijlage
//ontvanger
$email ='[email protected]';
//geneer boundary
DEFINE('bound',md5(uniqid(time())));
//check request method
$headers = "From: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "Reply-To: ".$_POST['from']." <".$_POST['email'].">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
//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";
//readfile
$filename = "./1.jpg";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
//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['bericht'] ."\r\n";
//boundary
$body.= "--".bound."\r\n";
//content type + naam bestand (database.sql)
$body .= "Content-Type: application/octet-stream; name=".$contents."\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($contents )) . "\r\n";
mail($email,$_POST['subject'],$body,$headers);
echo 'Email (Met een bijlage) is verzonden';
?>
Zo had ik hem gemaakt..
Maar dan stuurt hij (niet meer een .dat) maar een onleesbaar file van 0kb mee...
Kan dat wel op de manier zoals Mark het had gedaan. In eerste instantie is als bijlage $_FILES['file']['name'], dan doet die het wel neem ik aan. Maar $bestand zit anders in elkaar dan $_FILES['file']['name'].
Als het een afbeelding is die die altijd mee moet sturen, dan kan je die ook met het internetadres als <img src=$bestand> (html-code) weer laten geven.
Als het een afbeelding is die die altijd mee moet sturen, dan kan je die ook met het internetadres als <img src=$bestand> (html-code) weer laten geven.
die andere werkte idd wel..
Maar ik wil hem standaard een bepaalde bijlage laten meesturen, en tja soms is dat een foto soms niet.. Wat moet ik dan doen?
Maar ik wil hem standaard een bepaalde bijlage laten meesturen, en tja soms is dat een foto soms niet.. Wat moet ik dan doen?
Je kunt hem ook gewoon op het internet laten staan en dan een link in de tekst van mail plaatsten.
Als je gebruik maakt van PHPMailer is het redelijk eenvoudig om een bestand toe te voegen aan een email.
Dit kan dan zowel een 'inline' bijlage zijn (voor bv weergave van afbeeldingen in de email) of als 'attachment'.
Het gemak van PHPMailer is dat je niet zelf allerlei headers en boundaries moet genereren, dat doet de class zelf.
Je kunt er een artikel over lezen op designhulp.nl
Dit kan dan zowel een 'inline' bijlage zijn (voor bv weergave van afbeeldingen in de email) of als 'attachment'.
Het gemak van PHPMailer is dat je niet zelf allerlei headers en boundaries moet genereren, dat doet de class zelf.
Je kunt er een artikel over lezen op designhulp.nl
Gewijzigd op 18/11/2005 00:42:00 door Willem




