No tengo mucho tiempo para analizar por completo tu código, en teoría leer el contenido del archivo e ir codificando con base64, debería funcionar.
¿ Cuando te llega el mensaje ? ¿ has visto el código ? ¿ aparece la sección Content-type: multipart/mixed ?
De todas formas te dejo un par de apuntes sobre PEAR:Mail y Phpmailer, ambos ejemplos adjuntan un archivo al e-mail enviado (
http://deerme.org/articles/view/5-pearmail-y-phpmailer )
Saludos.