Here's some code I wrote a long time ago...It pulls the attachments from a database, but could be modified to read from filesystem...let me know if you have any questiosn on it...
function add_send_email()
{
global $HTTP_POST_VARS;
reset ($HTTP_POST_VARS);
while (list ($key, $val) = each ($HTTP_POST_VARS))
$$key = $val;
$info = get_user_info();
$nfiles = count($files);
$nimages = count($images);
$uid = strtoupper(md5(uniqid(time())));
$headers = "From: ".$info[user_email]."\nReply-To: ".$info[user_email]."\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=$uid\n";
$headers .= "--$uid\n";
$headers .= "Content-Type: text/plain\n";
$headers .= "Content-Transfer-Encoding: 8bit\n\n";
$headers .= "$message\n";
for($x=0; $x<$nimages; $x++)
{
$image = mysql_fetch_array(mysql_query("select * from image_gallery_images where image_id='".$images[$x]."'"));
$headers .= "--$uid\n";
$headers .= "Content-Type: ".$image[image_type]."; name=\"".$image[image_name]."\"\n";
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment; filename=\"".$image[image_name]."\"\n\n";
$headers .= stripslashes(chunk_split(base64_encode($image[image]))) . "\n";
}
for($x=0; $x<$nfiles; $x++)
{
$document = mysql_fetch_array(mysql_query("select * from documents where document_id='".$files[$x]."'"));
$headers .= "--$uid\n";
$headers .= "Content-Type: ".$document[document_type]."; name=\"".$document[document_name]."\"\n";
$headers .= "Content-Transfer-Encoding: base64\n";
$headers .= "Content-Disposition: attachment; filename=\"".$document[document_name]."\"\n\n";
$headers .= stripslashes(chunk_split(base64_encode($document[document]))) . "\n";
}
// echo $headers;
mail($to,$subject,$message,$headers);
header("Location: " . APP_PATH . "index.php?action=contact_list");
}