$file = fopen($filename, "rb");
$data = fread($file, filesize( $filename ) );
fclose($file);
$NameFile = $NameFile; // в этой переменной надо сформировать имя файла (без всякого пути)
$File = $data;
$to = $Email;
$From = "info@test.ru"; //От кого
$EOL = "\r\n"; // ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём
$boundary = "--".md5(uniqid(time())); // любая строка, которой не будет ниже в потоке данных.
$message = "
<p>Любой текст если нужно</p>
";
$subject= '=?utf-8?B?' . base64_encode('Пример') . '?=';
$headers = "MIME-Version: 1.0;$EOL";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers .= "From: $From\nReply-To: $From\n";
$multipart = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=utf-8$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL; // раздел между заголовками и телом html-части
$multipart .= chunk_split(base64_encode($message));
$multipart .= "$EOL--$boundary$EOL";
$multipart .= "Content-Type: application/octet-stream; name=\"$NameFile\"$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= "Content-Disposition: attachment; filename=\"$NameFile\"$EOL";
$multipart .= $EOL; // раздел между заголовками и телом прикрепленного файла
$multipart .= chunk_split(base64_encode($File));
$multipart .= "$EOL--$boundary--$EOL";
if(!mail($to, $subject, $multipart, $headers)){
echo 'Письмо не отправлено';
} //Отправляем письмо
else{
echo 'Письмо отправлено';
}
Enjoy! =)