Ashish Sood Posted July 2, 2014 Share Posted July 2, 2014 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 More sharing options...
justsomeguy Posted July 2, 2014 Share Posted July 2, 2014 You have a variable called $errors which never gets printed, maybe there's an error. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now