Milan Bastola
Milan Bastola

Reputation: 304

PHPMailer Sending just One File

I am trying to send email with multiple attachments using PHPMailer class. Multiple files are uploading successfully in directory but it's sending just one file in Email. And how to format my email body using bootstrap? Your suggestions will be highly appreciated. I am using PHPMailer 6.0.5

Here is my PHP Code:

<?php 

    $msg = '';
    use PHPMailer\PHPMailer\PHPMailer;
    include_once 'PHPMailer/PHPMailer.php';
    include_once 'PHPMailer/Exception.php';
    // include_once 'PHPMailer/SMTP.php';

    if (isset($_POST['submit'])) {

        $inputZip = $_POST['inputZip'];
        $selectService = $_POST['selectService'];
        $lawnMovingService = $_POST['lawnMovingService'];
        $leafRemovalService = $_POST['leafRemovalService'];
        $snowPlowingService = $_POST['snowPlowingService'];
        $handymanService = $_POST['handymanService'];
        $inputName = $_POST['inputName'];
        $inputEmail = $_POST['inputEmail'];
        $inputPhone = $_POST['inputPhone'];
        $inputMessage = $_POST['inputMessage'];

        if (isset($_FILES['images']['name']) && $_FILES['images']['name'] != '') {
            $destination = "attachment/";
            foreach ($_FILES["images"]["tmp_name"] as $key => $value) {
                $tmp_name = $_FILES["images"]["tmp_name"][$key];
                $name = $destination . basename($_FILES["images"]["name"][$key]);
                move_uploaded_file($tmp_name, $name);
            }
        } else {
            $name = '';
        }

        $mail = new PHPMailer;

        //For SMTP 
        //$mail->Host = "smtp.gmail.com";
        //$mail->isSMTP(); // This line may cause problem
        //$mail->SMTPAuth = true;
        //$mail->Username = "[email protected]";
        //$mail->Password = "examplePassword";
        //$mail->SMTPSecure = "ssl"; //OR TLS
        //$mail->Port = 465; //TLS : 587

        $mail->addAddress('[email protected]');
        $mail->setFrom($inputEmail);
        $mail->Subject = 'Service Booking from Website';
        $mail->isHTML(true);
        $mail->Body = $inputMessage;
        $mail->addAttachment($name);

        if ($mail->send()) {
            header('Location: index.php');
        } else {
            header('Location: contact.php');
        }

        // if(sendemail('[email protected]', $email, $name, $body, $file)) {
        //      $msg = 'Email Sent!';
        //      sendemail($inputEmail, '[email protected]', $inputName, 'We have received your email');
        //  }
    }

Upvotes: 0

Views: 1115

Answers (1)

user9487972
user9487972

Reputation:

I moved the class creation up to be before the file file processing loop, and moved the attachment code in to the loop

<?php 

    $msg = '';
    use PHPMailer\PHPMailer\PHPMailer;
    include_once 'PHPMailer/PHPMailer.php';
    include_once 'PHPMailer/Exception.php';
    // include_once 'PHPMailer/SMTP.php';

    if (isset($_POST['submit'])) {

        $inputZip = $_POST['inputZip'];
        $selectService = $_POST['selectService'];
        $lawnMovingService = $_POST['lawnMovingService'];
        $leafRemovalService = $_POST['leafRemovalService'];
        $snowPlowingService = $_POST['snowPlowingService'];
        $handymanService = $_POST['handymanService'];
        $inputName = $_POST['inputName'];
        $inputEmail = $_POST['inputEmail'];
        $inputPhone = $_POST['inputPhone'];
        $inputMessage = $_POST['inputMessage'];

        $mail = new PHPMailer; //moved here

        if (isset($_FILES['images']['name']) && $_FILES['images']['name'] != '') {
            $destination = "attachment/";
            foreach ($_FILES["images"]["tmp_name"] as $key => $value) {
                $tmp_name = $_FILES["images"]["tmp_name"][$key];
                $name = $destination . basename($_FILES["images"]["name"][$key]);
                move_uploaded_file($tmp_name, $name);
                $mail->addAttachment($name); //attache here
            }
        } else {
            $name = '';
        }



        //For SMTP 
        //$mail->Host = "smtp.gmail.com";
        //$mail->isSMTP(); // This line may cause problem
        //$mail->SMTPAuth = true;
        //$mail->Username = "[email protected]";
        //$mail->Password = "examplePassword";
        //$mail->SMTPSecure = "ssl"; //OR TLS
        //$mail->Port = 465; //TLS : 587

        $mail->addAddress('[email protected]');
        $mail->setFrom($inputEmail);
        $mail->Subject = 'Service Booking from Website';
        $mail->isHTML(true);
        $mail->Body = $inputMessage;


        if ($mail->send()) {
            header('Location: index.php');
        } else {
            header('Location: contact.php');
        }

        // if(sendemail('[email protected]', $email, $name, $body, $file)) {
        //      $msg = 'Email Sent!';
        //      sendemail($inputEmail, '[email protected]', $inputName, 'We have received your email');
        //  }
    }

Upvotes: 1

Related Questions