title: Upload file to server, then attach to email and send in one php file
body: <p>I've managed to make a script, with my poor php skills, that upload an image to a folder on my webserver. I now want the script to send an email with the image attached after it's uploaded.</p>
  
  <p>This is my script. Maby my problem is that the email is sent before the file is uploaded completely. it worked one time with a small image.. But now nothing happens... (exept the file is uploaded...)</p>
  
  <pre><code>&lt;?php
  print_r($_FILES);
  $new_image_name = "image".rand(10, 20).".jpg";
  move_uploaded_file($_FILES["file"]["tmp_name"], "/home/virtual/domain.com/public_html/upload/".$new_image_name);
  
  //define the receiver of the email 
  $to = 'sender@domain.com'; 
  //define the subject of the email 
  $subject = 'Upload: '.$_GET["album"]; 
  //create a boundary string. It must be unique 
  //so we use the MD5 algorithm to generate a random hash 
  $random_hash = md5(date('r', time())); 
  //define the headers we want passed. Note that they are separated with \r\n 
  $headers = "From: reciver@domain.com\r\nReply-To: reciver@domain.com"; 
  //add boundary string and mime type specification 
  $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 
  //read the atachment file contents into a string,
  //encode it with MIME base64,
  //and split it into smaller chunks
  $attachment = chunk_split(base64_encode(file_get_contents('upload/'.$new_image_name))); 
  //define the body of the message. 
  ob_start(); //Turn on output buffering 
  ?&gt; 
  --PHP-mixed-&lt;?php echo $random_hash; ?&gt;  
  Content-Type: multipart/alternative; boundary="PHP-alt-&lt;?php echo $random_hash; ?&gt;" 
  
  --PHP-alt-&lt;?php echo $random_hash; ?&gt;  
  Content-Type: text/plain; charset="iso-8859-1" 
  Content-Transfer-Encoding: 7bit
  
  Hello World!!! 
  This is simple text email message. 
  
  --PHP-alt-&lt;?php echo $random_hash; ?&gt;  
  Content-Type: text/html; charset="iso-8859-1" 
  Content-Transfer-Encoding: 7bit
  
  &lt;h2&gt;Hello World!&lt;/h2&gt; 
  &lt;p&gt;This is something with &lt;b&gt;HTML&lt;/b&gt; formatting.&lt;/p&gt; 
  
  --PHP-alt-&lt;?php echo $random_hash; ?&gt;-- 
  
  --PHP-mixed-&lt;?php echo $random_hash; ?&gt;  
  Content-Type: application/jpg; name="attachment.jpg"  
  Content-Transfer-Encoding: base64  
  Content-Disposition: attachment  
  
  &lt;?php echo $attachment; ?&gt; 
  --PHP-mixed-&lt;?php echo $random_hash; ?&gt;-- 
  
  &lt;?php 
  //copy current buffer contents into $message variable and delete current output buffer 
  $message = ob_get_clean(); 
  //send the email 
  $mail_sent = @mail( $to, $subject, $message, $headers ); 
  //if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
  echo $mail_sent ? "Mail sent" : "Mail failed"; 
  ?&gt;
  ge is sent successfully print "Mail sent". Otherwise print "Mail failed" 
  echo $mail_sent ? "Mail sent" : "Mail failed"; 
  };
  ?&gt;
  </code></pre>