tu dois encoder le fichier en base64 et definie le mail en multipart/mixed + le contenue du fichier doit etre délimité par une "boundary" definie dans l'entete .
-> regarde dans la doc PHP je suis certain qu'il y a tout dedans, c'est avec elle que j'ai appris a le faire
et en plus commence par t'envoyer un simple mail texte, regarde l'intégralité de ce mail (entete+corp), ensuite fait pareil en rajoutant un fichier quelquonque (sauf texte), ca te permettra de bien comprendre le principe des entete mail mais fait gaffe, y a un cas special assez casse couille a programmer -> un mail qui est : txt ET/ou html + fichier
voici un de mes scripts pour encoder un fichier en base64
$open=fopen($fichier,'rb'; // ATTENTION : rajouter "b" au mode -> sous windows UNIQUEMENT !!
$img=fread($open,filesize($fichier));
$img=chunk_split(base64_encode($img));
fclose($open);
le chunk_split est tres important, regarde dans la doc tout est expliqué !!