Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6926711
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T10:57:14+00:00 2026-05-27T10:57:14+00:00

I’m having some trouble trying to get my script to send a file attachment

  • 0

I’m having some trouble trying to get my script to send a file attachment with the information collected from the form. I used PHP Mailer Form with File Attachment and modified to fit my specification. So far it will send the form information without the attached image but when I upload an image it will only send the attachment and no other information from the form. I need it to be able to send the form information with or without an attachment. I’m a beginner with php so I’m not sure why its doing this.

Here is my code

<?php

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

    $sendTo = '<myemail@somesite.com';
    $subject = 'Request';
    $from = $_POST['email_address'];

    // Allowed file types. add file extensions WITHOUT the dot.
    $allowtypes=array("jpg", "png", "gif");

    // Require a file to be attached: false = Do not allow attachments true = allow only 1 file to be attached
    $requirefile="true";

    // Maximum file size for attachments in KB NOT Bytes for simplicity. MAKE SURE your php.ini can handel it,
    // post_max_size, upload_max_filesize, file_uploads, max_execution_time!
    // 2048kb = 2MB,       1024kb = 1MB,     512kb = 1/2MB etc..
    $max_file_size="5120";

    $errors = array(); //Initialize error array

    //Check if the file type uploaded is a valid file type. 
    if((!empty($_FILES["attachment"])) && ($_FILES['attachment']['error'] == 0)) {
            // basename -- Returns filename component of path
            $filename = basename($_FILES['attachment']['name']);
            $ext = substr($filename, strrpos($filename, '.') + 1);
            $filesize=$_FILES['attachment']['size'];
            $max_bytes=$max_file_size*5120;

            //Check if the file type uploaded is a valid file type. 
            if (!in_array($ext, $allowtypes)) {
                $errors[]="Invalid extension for your file: <strong>".$filename."</strong>";

        // check the size of each file
        } elseif($filesize > $max_bytes) {
                $errors[]= "Your file: <strong>".$filename."</strong> is to big. Max file size is ".$max_file_size."kb.";
            }

    } // if !empty FILES

        // send an email
        // Obtain file upload vars
        $fileatt      = $_FILES['attachment']['tmp_name'];
        $fileatt_type = $_FILES['attachment']['type'];
        $fileatt_name = $_FILES['attachment']['name'];

        // Headers
        $headers = 'From: '.$from = $_POST['email_address'];

        // create a boundary string. It must be unique
        $semi_rand = md5(time());
        $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

        // Add the headers for a file attachment
        $headers .= "\nMIME-Version: 1.0\n" .
                  "Content-Type: multipart/mixed;\n" .
                  " boundary=\"{$mime_boundary}\"";

        // Add a multipart boundary above the plain message
        $message ="This is a multi-part message in MIME format.\n\n";
        $message.="--{$mime_boundary}\n";
        $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
        $message.="Content-Transfer-Encoding: 7bit\n\n";
        $message .= "Name: \t\t".$_POST['name']."\n";
        $message .= "Email: \t\t".$_POST['email_address']."\n";
        if($_POST['phone_number'] != ""){
            $message .= "Phone: \t\t".$_POST['phone']."\n";

        $message .= "Date: \t\t".$_POST['full_date']."\n";
        }
        $message .= "\n";
        if($_POST['additional_info'] != ""){
            $message .= "Additional Information: \n".$_POST['additional_info']."\n";
        }
        if (is_uploaded_file($fileatt)) {
        // Read the file to be attached ('rb' = read binary)
        $file = fopen($fileatt,'rb');
        $data = fread($file,filesize($fileatt));
        fclose($file);

        // Base64 encode the file data
        $data = chunk_split(base64_encode($data));

        // Add file attachment to the message
        $message .= "--{$mime_boundary}\n" .
                  "Content-Type: {$fileatt_type};\n" .
                  " name=\"{$fileatt_name}\"\n" .
                  //"Content-Disposition: attachment;\n" .
                  //" filename=\"{$fileatt_name}\"\n" .
                  "Content-Transfer-Encoding: base64\n\n" .
                  $data . "\n\n" .
                  "--{$mime_boundary}--\n";
        }

        // Send the completed message
        mail($sendTo, $subject, $message, $headers);

        header("Location: complete.php");
}

?>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T10:57:15+00:00Added an answer on May 27, 2026 at 10:57 am

    Here is what I have done to send a mail with an attachment. Some of the code is mine and some of it has been taken from http://php.net/manual/en/function.mail.php. This code has been tried and tested so, it should work. Also see if sendmail is installed. If on linux ubuntu system try sudo apt-get install sendmail to install it.

    File Name: index.php

        <?php
        if( $_POST || $_FILES )
        {
                // email fields: to, from, subject, and so on
                // Here 
                $from = "someone@somewhere.com";
                $to = "someone_else@somewhere_else.com";
                $subject = "Mail with Attachment";
                $message = "This is the message body and to it I will append the attachments.";
                $headers = "From: $from";
    
                // boundary
                $semi_rand = md5(time());
                $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
    
                // headers for attachment
                $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";
    
                // multipart boundary
                $message = "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n"."Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
                fixFilesArray($_FILES['attachment']);
                foreach ($_FILES['attachment'] as $position => $file) 
                {
                        // should output array with indices name, type, tmp_name, error, size
                        $message .= "--{$mime_boundary}\n";
                        $fp     = @fopen($file['tmp_name'],"rb");
                        $data   = @fread($fp,filesize($file['tmp_name']));
                        @fclose($fp);
                    $data = chunk_split(base64_encode($data));
                    $message .= "Content-Type: application/octet-stream; name=\"".$file['name']."\"\n"."Content-Description: ".$file['name']."\n" ."Content-Disposition: attachment;\n" . " filename=\"".$file['name']."\";size=".$file['size'].";\n"."Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
                }
                $message .= "--{$mime_boundary}--";
                $returnpath = "-f" . $from;
                $ok = @mail($to, $subject, $message, $headers, $returnpath);
                if($ok){ return 1; } else { return 0; }
        }
        //This function will correct file array from $_FILES[[file][position]] to $_FILES[[position][file]] .. Very important
    
        function fixFilesArray(&$files)
        {
                $names = array( 'name' => 1, 'type' => 1, 'tmp_name' => 1, 'error' => 1, 'size' => 1);
    
                foreach ($files as $key => $part) {
                        // only deal with valid keys and multiple files
                        $key = (string) $key;
                        if (isset($names[$key]) && is_array($part)) {
                                foreach ($part as $position => $value) {
                                        $files[$position][$key] = $value;
                                }
                                // remove old key reference
                                unset($files[$key]);
                        }
                }
        }
        ?>
        <html>
            <body>
                <form method="POST" action="index.php" enctype="multipart/form-data">
                    <input type="file" name="attachment[]"><br/>
                    <input type="submit">
                </form>
            </body>
        </html>
    

    By the way I would like to apologize for using sendmail since it is a bit slow. I will try to post a better solution.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have just tried to save a simple *.rtf file with some websites and
For some reason, after submitting a string like this Jack’s Spindle from a text
I have a text area in my form which accepts all possible characters from
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
I'm having trouble keeping the paragraph square between the quote marks. In firefox the
I am trying to understand how to use SyndicationItem to display feed which is
I used javascript for loading a picture on my website depending on which small
Basically, what I'm trying to create is a page of div tags, each has
I want use html5's new tag to play a wav file (currently only supported

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.