Es algo complicado. Para enviar correos con archivos adjuntos lo primero que tienes que hacer es leer el archivo y guardarlo en una variable. Después hay que modificar la cabecera del correo que vas a enviar, especificando que el correo contiene un adjunto de determinado tipo (no recuerdo como poner el MIME-TYPE para eso) y en el contenido pones el texto del correo y la variable con el contenido del archivo (no recuerdo como tiene que venir concatenadas las 2 cadenas, pero esa es la idea).
Para leer los adjuntos es mas o menos la misma idea, tienes que diferenciar el texto del correo del resto del adjunto, creo que tienes que buscar la parte que especifique el contenido MIME del archivo adjunto (creo que es application/octet o algo parecido).
Encuentras más información en
la referencia de mail() en php.net, en especial los enlaces que tienen sobre los documentos RFC.