Primero asegurate de que el archivo subió correctamente a tu servidor ...
De hecho ..
// open the file for a binary read
$file = fopen($tmp_name,'rb');
Esa forma de abrir un archivo desde el directorio temporal donde PHP sube todo archivo que pasa por el proceso de "upload" en muchas ocasiones (Safe Mode a ON .. y otro tipo de restricciones) no es posible hacer dicha taréa. En esos casos con esas restricciones debes primero "mover" el archivo con funciones tipo move_uploaded_file() a un directorio ubicado bajo el control de tu aplicación (sitio) y de ahí podrías usar ese "fopen()" como lo hece el código que presentas.
También ... debes tener presente que si estás usando un código -que no te funciona- .. lo primero es NO usar el operador (o como se llame): @ delante de funciones como:
if (@mail($to, $subject, $message, $headers))
así nunca veras los posibles mensajes de error y textuales (exactos) que pueda estar originando esa ejecución de esa función. Quitalo y observa el mensaje de error.
Por otro lado .. te recomendaría para evitar problemas usar la classe:
PHP Mailer
http://phpmailer.sourceforge.net
Te permite de forma cómoda enviar e-mails con archivos adjuntos .. en HTML .. multiparte .. etc y sigue los standares de las "RFC's" correspondientes para que no tengas (o los minimices) problemas con el envio del e-mail.
Un saludo,