WP mail attachment from form without upload file on filemanager

From a form, via wp_mail function, I’m trying to send an email with an attachment, without upload the file to the file manager.
I’m getting the email with an attachment. But the attachment name not correct and no file type. Please help to solving this.

This is HTML form

Read More
<form action="POST" enctype="multipart/form-data">
    <table>
        <input type="file" name="Attached">
        <input type="Submit" name="Submit">
    </table>
</form>

There is my PHP Code

if (isset($_POST['Submit'])) {
    $attachments = $_FILES['Attached']['tmp_name'];

    $recipients = "john@mail.com";
    $SenderName = get_bloginfo('name');
    $SenderEmail = "noreply@domain.com";
    $body   = "How are you what are you doing now. bla bla bla";

    $recipients = array($to);
    $headers[] = "From: $SenderName <$SenderEmail>" . "rn";
    $headers[] = "Content-Type: text/html";
    $subj = "This is mail subject";
    $SendMail   = wp_mail( $recipients, $subj, $body, $headers, $attachments );
}

Related posts

1 comment

  1. Well I had to come up with workaround for this one

    What I did is

    1. Upload the file to the server
    2. email with wp-mail
    3. on successful email or not; unlink the uploaded image

    1.Upload the file to the server

        /*image upload */
    /* GET File Variables */
    $target_dir = $_SERVER['DOCUMENT_ROOT']. "/uploads/";
    $image_name = $_FILES['YOUR_IMAGE']['name'];
    $target_file = $target_dir . basename($_FILES['YOUR_IMAGE']['name']);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
    // Check if image file is a actual image or fake image
    
    $check = getimagesize($_FILES["YOUR_IMAGE"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
    
    
    // Check file size
    if ($_FILES["YOUR_IMAGE"]["size"] > 500000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
        && $imageFileType != "gif" ) {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    // Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
        // if everything is ok, try to upload file
    } else {
        if (move_uploaded_file($_FILES["YOUR_IMAGE"]["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES["YOUR_IMAGE"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
    
    $attachment = array($target_file);
    

    2.email with wp-mail

        $to = $Email; // put your email here
            $headers = array('Content-Type: text/html; charset=UTF-8','From:' . $name . '<' . $fromEmail . '>');
    
            // $headers = 'From:' . $name . '<' . $studentEmail . '>' . "rn"; // put user's email here or duplicate your email
            $subject = 'Apply Online Form';
    
            if (wp_mail($to, $subject, $message, $headers, $attachment ) === false) {
                echo "Error";
                 unlink($target_file);
            } else {
                 unlink($target_file);
                echo "<h3> Mail Sent Successfully</h3>";
            }
    

    3.on successful email or not unlink the uploaded image

    unlink($target_file);
    

Comments are closed.