send_multiple_file_upload.phps 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * PHPMailer multiple files upload and send example
  4. */
  5. //Import the PHPMailer class into the global namespace
  6. use PHPMailer\PHPMailer\PHPMailer;
  7. require '../vendor/autoload.php';
  8. $msg = '';
  9. if (array_key_exists('userfile', $_FILES)) {
  10. // Create a message
  11. $mail = new PHPMailer;
  12. $mail->setFrom('from@example.com', 'First Last');
  13. $mail->addAddress('whoto@example.com', 'John Doe');
  14. $mail->Subject = 'PHPMailer file sender';
  15. $mail->msgHTML('My message body');
  16. //Attach multiple files one by one
  17. for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
  18. $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
  19. $filename = $_FILES['userfile']['name'][$ct];
  20. if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
  21. $mail->addAttachment($uploadfile, $filename);
  22. } else {
  23. $msg .= 'Failed to move file to ' . $uploadfile;
  24. }
  25. }
  26. if (!$mail->send()) {
  27. $msg .= "Mailer Error: " . $mail->ErrorInfo;
  28. } else {
  29. $msg .= "Message sent!";
  30. }
  31. }
  32. ?>
  33. <!DOCTYPE html>
  34. <html>
  35. <head>
  36. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  37. <title>PHPMailer Upload</title>
  38. </head>
  39. <body>
  40. <?php if (empty($msg)) { ?>
  41. <form method="post" enctype="multipart/form-data">
  42. <input type="hidden" name="MAX_FILE_SIZE" value="100000">
  43. Select one or more files:
  44. <input name="userfile[]" type="file" multiple="multiple">
  45. <input type="submit" value="Send Files">
  46. </form>
  47. <?php } else {
  48. echo $msg;
  49. } ?>
  50. </body>
  51. </html>