Krijg me phpmailer niet aan de gang ?
Ik Neem aan dat me directory niet goed is waar ik het bestand tijdelijke wil opslaan.
Maar het is toch een temp file ?
Alvast bedankt voor de hulp.
Dit zijn de codes standaard PHPmailer scripts.
PHPMailerAutoload.php
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
/**
* PHPMailer SPL autoloader.
* PHP Version 5
* @package PHPMailer
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <[email protected]>
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2014 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* PHPMailer SPL autoloader.
* @param string $classname The name of the class to load
*/
function PHPMailerAutoload($classname)
{
//Can't use __DIR__ as it's only in PHP 5.3+
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}
if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
//SPL autoloading was introduced in PHP 5.1.2
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
spl_autoload_register('PHPMailerAutoload', true, true);
} else {
spl_autoload_register('PHPMailerAutoload');
}
} else {
/**
* Fall back to traditional autoload for old PHP versions
* @param string $classname The name of the class to load
*/
function __autoload($classname)
{
PHPMailerAutoload($classname);
}
}
?>
En me mailpagina.
<?php
/**
* PHPMailer simple file upload and send example
*/
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
// First handle the upload
// Don't trust provided filename - same goes for MIME types
// See http://php.net/manual/en/features.file-upload.php#114004 for more thorough upload validation
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name']));
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
// Upload handled successfully
// Now create a message
// This should be somewhere in your include_path
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('[email protected]', 'First Last');
$mail->addAddress('[email protected]', 'John Doe');
$mail->Subject = 'Verkoopmelding'.$Verkoopbureau;
$mail->msgHTML("My message body");
// Attach the uploaded file
$mail->addAttachment($uploadfile, 'My uploaded file');
if (!$mail->send()) {
$msg = "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg = "Message sent!";
}
} else {
$msg = 'Failed to move file to ' . $uploadfile;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
<?php } else {
echo $msg;
} ?>
</body>
</html>
/**
* PHPMailer SPL autoloader.
* PHP Version 5
* @package PHPMailer
* @link https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project
* @author Marcus Bointon (Synchro/coolbru) <[email protected]>
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2014 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* PHPMailer SPL autoloader.
* @param string $classname The name of the class to load
*/
function PHPMailerAutoload($classname)
{
//Can't use __DIR__ as it's only in PHP 5.3+
$filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';
if (is_readable($filename)) {
require $filename;
}
}
if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
//SPL autoloading was introduced in PHP 5.1.2
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
spl_autoload_register('PHPMailerAutoload', true, true);
} else {
spl_autoload_register('PHPMailerAutoload');
}
} else {
/**
* Fall back to traditional autoload for old PHP versions
* @param string $classname The name of the class to load
*/
function __autoload($classname)
{
PHPMailerAutoload($classname);
}
}
?>
En me mailpagina.
<?php
/**
* PHPMailer simple file upload and send example
*/
$msg = '';
if (array_key_exists('userfile', $_FILES)) {
// First handle the upload
// Don't trust provided filename - same goes for MIME types
// See http://php.net/manual/en/features.file-upload.php#114004 for more thorough upload validation
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name']));
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
// Upload handled successfully
// Now create a message
// This should be somewhere in your include_path
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('[email protected]', 'First Last');
$mail->addAddress('[email protected]', 'John Doe');
$mail->Subject = 'Verkoopmelding'.$Verkoopbureau;
$mail->msgHTML("My message body");
// Attach the uploaded file
$mail->addAttachment($uploadfile, 'My uploaded file');
if (!$mail->send()) {
$msg = "Mailer Error: " . $mail->ErrorInfo;
} else {
$msg = "Message sent!";
}
} else {
$msg = 'Failed to move file to ' . $uploadfile;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>PHPMailer Upload</title>
</head>
<body>
<?php if (empty($msg)) { ?>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
<?php } else {
echo $msg;
} ?>
</body>
</html>
Toevoeging op 29/12/2014 07:52:53:
p.s wat zijn de code Tags om html in vensters te weergeven op dit form ?
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/12/2014 13:51:40 door - Ariën -
Ik vermoed dat je geen rechten hebt om in de /tmp te schrijven. Heb je de server in eigen beheer?
Op regel tien gaat het niet helemaal goed als je het mij vraagt. in $uploadfile zou een volledig path moeten komen naar een directory met voldoende schrijfrechten.
Stel dat de documentroot van je website dit is:
/var/www/html
en je maakt daarin een directory uploads met voldoende schrijfrechten
dan zou er in $uploadfile moeten komen:
/var/www/html/uploads/3ed3186da55a7462dffaeaec5f1449ac0227e16500mHVo
Plaats dus ook even een echo $uploadfile; zodat je kan zien hoe het path er uit ziet.
Ik kan hand matig wel een map aanmaken in /tmp.
Hoe moet ik dit formuleren ben niet bekend met de functies hier onder
Krijg ik dit te zien
Dat gaat niet.
Geef een ander/goed path in.
Zeg dat mijn pad /upload is waar komt dat te staan en is dit dat een permanente of tmp file
$uploadfile = '/upload/naam.ext';
Dan moet je zelf even een map in je webroot aanmaken die 'uploads' heet, en die eventueel schrijfrechten geven (755 of anders 777)
Gewijzigd op 29/12/2014 13:57:36 door - Ariën -
Jordy R op 29/12/2014 13:53:41:
is dit dat een permanente of tmp file
Permanent.
Ziet iemand de oplossing of weet er iemand een ander (goed) script die het mogelijk maakt een bestand up te Loaden en te versturen per email.
Alvast bedankt voor alle hulp.
Hij blijft "Failed to move file" gegeven ongeacht in welke directory ik upload
Bestaat de map?
Juiste rechten op de map?
Code (php)
1
2
3
2
3
$uploadfile = "/contracten/".$_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['name'], $uploadfile)) {
// Upload handled successfully
if (move_uploaded_file($_FILES['userfile']['name'], $uploadfile)) {
// Upload handled successfully
Map bestaat en heeft 777 rechten
Uit veiligheidsoverwegingen raad ik aan om de naam niet hetzelfde te houden als het bestand wat je uploadt.
Gewijzigd op 30/12/2014 12:41:18 door - Ariën -
Dat moet tmp_name zijn i.p.v. name.
En error echoed 0
Toevoeging op 30/12/2014 13:35:15:
Was een beetje aan het proberen san hij staat nu weer op tmp_name maar resultaten van echo zijn het zelfde
Werkt het script bij jullie wel ?
Toevoeging op 30/12/2014 13:48:48:
hebben jullie hier iets aan ?
Code (php)
1
2
3
4
2
3
4
echo'uploadfile '. $uploadfile.'<br><br>';
echo'error ' .$_FILES['userfile']['error'].'<br><br>';
echo'tmp ' .$_FILES['userfile']['tmp_name'].'<br><br>';
echo'name ' .$_FILES['userfile']['name'].'<br><br>';
echo'error ' .$_FILES['userfile']['error'].'<br><br>';
echo'tmp ' .$_FILES['userfile']['tmp_name'].'<br><br>';
echo'name ' .$_FILES['userfile']['name'].'<br><br>';
/contracten/test.pdf
0
/tmp/phpATmSFc
test.pdf
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$uploadfile = "/contracten/".$_FILES['userfile']['name'];
if(!is_writable($uploadfile)) echo 'Kan niet schrijven';
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
?>
$uploadfile = "/contracten/".$_FILES['userfile']['name'];
if(!is_writable($uploadfile)) echo 'Kan niet schrijven';
if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
?>
Gewijzigd op 30/12/2014 13:58:28 door - SanThe -
Kan niet schrijven echo hij