Jump to content

Email attachement , how to fix it


Ashish Sood

Recommended Posts

Hi All,I am on the project of email attachment where i am facing some strange problem, my email attachment is working fine when i upload my php script to my personal hosting server, but when i test the similar php script inside of my company network the attachment arrived in the corrupt form, i don't know where is the problem and how to fix it .

<html><head><title>Sending attachment using PHP</title></head><body>    <?php //echo dirname(__FILE__); ?><?php$max_allowed_file_size = 10000000; // size in KB$allowed_extensions = array("jpg", "jpeg", "gif", "bmp", "doc", "docx");$upload_folder = 'upload/'; //<-- this folder must be writeable by the script$your_email = 'test@abc.com';//<<-- update this to your email address$errors ='';//Get the uploaded file information    $name_of_uploaded_file = basename($_FILES['attachment']['name']);        //get the file extension of the file    $type_of_uploaded_file = substr($name_of_uploaded_file,                            strrpos($name_of_uploaded_file, '.') + 1);        $size_of_uploaded_file = $_FILES["attachment"]["size"]/1024;        ///------------Do Validations-------------    /*if(empty($_POST['name'])||empty($_POST['email']))    {        $errors .= "n Name and Email are required fields. ";        }*/    /*if(IsInjected($visitor_email))    {        $errors .= "n Bad email value!";    }*/        if($size_of_uploaded_file > $max_allowed_file_size )    {        $errors .= "n Size of file should be less than $max_allowed_file_size";    }        //------ Validate the file extension -----    $allowed_ext = false;    for($i=0; $i<sizeof($allowed_extensions); $i++)    {        if(strcasecmp($allowed_extensions[$i],$type_of_uploaded_file) == 0)        {            $allowed_ext = true;                }    }        if(!$allowed_ext)    {        $errors .= "n The uploaded file is not supported file type. ".        " Only the following file types are supported: ".implode(',',$allowed_extensions);    }        //send the email    if(empty($errors))    {        //copy the temp. uploaded file to uploads folder        $path_of_uploaded_file = $upload_folder . $name_of_uploaded_file;        $tmp_path = $_FILES["attachment"]["tmp_name"];                if(is_uploaded_file($tmp_path))        {         if(!copy($tmp_path,$path_of_uploaded_file))         {             $errors .= 'n error while copying the uploaded file';         }        }$to = "test@xyz.com";$subject = "Testing";$message = htmlspecialchars($_POST['comments']);# Open a file$file = fopen( "upload/".$name_of_uploaded_file, "r" );if( $file == false ){echo "Error in opening file";exit();}# Read the file into a variable$size = filesize("upload/".$name_of_uploaded_file);$content = fread( $file, $size);fclose($file);# encode the data for safe transit# and insert rn after every 76 chars.$encoded_content = chunk_split(base64_encode($content));# Get a random 32 bit number using time() as seed.$num = md5( time() );# Define the main headers.$header = "From:$your_emailrn";$header .= "MIME-Version: 1.0rn";$header .= "Content-Type: multipart/mixed; ";$header .= "boundary=$numrn";$header .= "--$numrn";# Define the message section$header .= "Content-Type: text/plainrn";$header .= "Content-Transfer-Encoding:8bitrnn";$header .= "$messagern";$header .= "--$numrn";# Define the attachment section$header .= "Content-Type: multipart/mixed; ";$header .= "name="$name_of_uploaded_file"rn";$header .= "Content-Transfer-Encoding:base64rn";$header .= "Content-Disposition:attachment; ";$header .= "filename="$name_of_uploaded_file"rnn";$header .= "$encoded_contentrn";$header .= "--$num--";# Send email now$retval = mail ( $to, $subject, $message, $header );if( $retval == true ){echo "Messageaahh sent successfully...";}else{echo "Message could not be sent...";}}?></body></html>
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...