Probleempje met toevoegen bijlage.
Ik ga uit van het script dat hier staat:
http://zainal.wordpress.com/2007/01/10/sending-email-attachments-in-php-using-phpmailer-class/#comments
Bovenstaande script werkt OK. Als ik de code "invlecht" in mijn eigen formulier , werkt alles, maar.... er komt geen bijlage! Wel een foutmelding
Warning: array_push() [function.array-push]: First argument should be an array in etc on line 83
Maar met die foutmelding kom ik niet verder, (krijg hem der niet uit) vraag me ook af of dat 'het" wel is .
Wie ziet wat ik niet Zie ??
alvast bedankt voor mee denken.
hieronder mijn het belangrijkste uit 'mijn' 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
72
73
74
75
76
77
78
79
80
81
82
83
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
78
79
80
81
82
83
<?php
//DEEL UIT CODE (regel 16 foutcode rond "array_push")
//////////////////////////////////////// Upload file functie ////////////////////////////////////////
function uploadFile($dir="",$filename="") {
//Variables Declaration
$dir = "upload_files/$filename";
$attachments = array();
global $attachments;
while(list($key,$value) = each($_FILES["bijlage"]["name"]))
{
if(!empty($value))
{
$filename = $value;
array_push($attachments, $filename); /// snap niet wat hier doet dus zet maar uit zetten?(= foutmelding weg)
$dir = "upload_files/$filename";
$success = copy($_FILES["bijlage"]["tmp_name"][$key], $dir);
}
}
if ($success) {
echo "<p><br><b>Files Uploaded Successfully<BR></b></p>";
SendIt();
}else {
exit("<p><br><b>Sorry the server was unable to upload the files...</b></p>");
}
}
//////////////////////////////////////// EINDE Upload file functie ////////////////////////////////////////
//////////////////////////////////////// EINDE PHP Mailer With Attachment Func ////////////////////////////////////////
*/
function SendIt($name="",$email="",$onderwerp="",$bestemd_voor="",$message="",$filename="") {
$name = stripslashes($_POST["name"]);
$email = stripslashes($_POST["email"]);
$onderwerp = stripslashes($_POST["onderwerp"]);
$bestemd_voor = stripslashes($_POST["bestemd_voor"]);
$message = stripslashes($_POST["message"]);
$dir = "upload_files/$filename";
$attachments = array("");
require("class.phpmailer.php");
//global $name,$email,$onderwerp,$bestemd_voor,$message,$attachments; /// MIJ onduidelijk wat dit is, en nut (google geft ook geen info)
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "localhost"; // SMTP servers
$mail->SMTPAuth = false; // turn on/off SMTP authentication
$mail->From = "$email";
$mail->FromName = "$name";
$mail->AddAddress("[email protected]", "mijzelf"); // Eerste geadresseerde
$mail->WordWrap = 50;// set word wrap
foreach($attachments as $key => $value) { //loop the Attachments to be added ...
echo "<p><br><b>dit is een test 1</b></p>";
$mail->AddAttachment("upload_files"."/".$value);
}
$mail->Subject = "$onderwerp";
$mail->Body = "$message";
if(!$mail->Send())
{
echo "<p><br><b>Er ging iets mis, je bericht is niet verstuurd, reden: </b></p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "<p><br><b>De mail is verstuurd</b></p>";
after mail is sent with attachments , delete the images on server ...
foreach($attachments as $key => $value) {//remove the uploaded files ..
echo "<p><br>dit is een test 2 (twee dus)</p>";
unlink("upload_files"."/".$value);
}
}
//////////////////// Hier het formulier ////////////////////
//(slechts stukje eruit)
function showForm($name="", $email="", $subject="", $message="",$valid="", $bestemd_voor="",$bijlage="") {
?>
//DEEL UIT CODE (regel 16 foutcode rond "array_push")
//////////////////////////////////////// Upload file functie ////////////////////////////////////////
function uploadFile($dir="",$filename="") {
//Variables Declaration
$dir = "upload_files/$filename";
$attachments = array();
global $attachments;
while(list($key,$value) = each($_FILES["bijlage"]["name"]))
{
if(!empty($value))
{
$filename = $value;
array_push($attachments, $filename); /// snap niet wat hier doet dus zet maar uit zetten?(= foutmelding weg)
$dir = "upload_files/$filename";
$success = copy($_FILES["bijlage"]["tmp_name"][$key], $dir);
}
}
if ($success) {
echo "<p><br><b>Files Uploaded Successfully<BR></b></p>";
SendIt();
}else {
exit("<p><br><b>Sorry the server was unable to upload the files...</b></p>");
}
}
//////////////////////////////////////// EINDE Upload file functie ////////////////////////////////////////
//////////////////////////////////////// EINDE PHP Mailer With Attachment Func ////////////////////////////////////////
*/
function SendIt($name="",$email="",$onderwerp="",$bestemd_voor="",$message="",$filename="") {
$name = stripslashes($_POST["name"]);
$email = stripslashes($_POST["email"]);
$onderwerp = stripslashes($_POST["onderwerp"]);
$bestemd_voor = stripslashes($_POST["bestemd_voor"]);
$message = stripslashes($_POST["message"]);
$dir = "upload_files/$filename";
$attachments = array("");
require("class.phpmailer.php");
//global $name,$email,$onderwerp,$bestemd_voor,$message,$attachments; /// MIJ onduidelijk wat dit is, en nut (google geft ook geen info)
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = "localhost"; // SMTP servers
$mail->SMTPAuth = false; // turn on/off SMTP authentication
$mail->From = "$email";
$mail->FromName = "$name";
$mail->AddAddress("[email protected]", "mijzelf"); // Eerste geadresseerde
$mail->WordWrap = 50;// set word wrap
foreach($attachments as $key => $value) { //loop the Attachments to be added ...
echo "<p><br><b>dit is een test 1</b></p>";
$mail->AddAttachment("upload_files"."/".$value);
}
$mail->Subject = "$onderwerp";
$mail->Body = "$message";
if(!$mail->Send())
{
echo "<p><br><b>Er ging iets mis, je bericht is niet verstuurd, reden: </b></p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "<p><br><b>De mail is verstuurd</b></p>";
after mail is sent with attachments , delete the images on server ...
foreach($attachments as $key => $value) {//remove the uploaded files ..
echo "<p><br>dit is een test 2 (twee dus)</p>";
unlink("upload_files"."/".$value);
}
}
//////////////////// Hier het formulier ////////////////////
//(slechts stukje eruit)
function showForm($name="", $email="", $subject="", $message="",$valid="", $bestemd_voor="",$bijlage="") {
?>
<form action="" enctype="multipart/form-data" method="POST" >
<tr>
<td class=" Free_Form" align="left">Een bijlage toevoegen</td>
<td class=" Free_Form" align="left" colspan="2">
Code (php)
</td>
</tr>
<tr>
<td class=" Free_Form" align="left" width="125"><input type="submit" name="submit" value="Verzenden"class='inputsmall'></td>
</td>
</form>
?>
De foutmelding heb ik er inmiddels al uit . Maar heeft verder weinig nut gehad. Is mij duidelijk dat de fout zit bij het niet juist invoegen van de bijlage in de "SendIt" function. Voorlopig heb ik het anders maar opgelost. Hele meervoudige bijlage idee geschrapt en alle array gedoe in dit verband uit het script geschreven. Nu werkt het wel goed. Maar is beperkt tot 1 bijlage.