per chi fosse ancora in cerca di una soluzione, io ho risolto così:

Codice PHP:

// il path della mia cartella immagini
define(IMG_MAIL_PATH"../Files/mail/img/"); 

//codice html di esempio
$BODY "

testo</p>[img]prova1.jpg[/img]

altro testo</p><img src=\"prova2.jpg\" alt='prova2' />

testo</p>"
//il nostro html di prova

// TROVIAMO I TAG <img />

$imgcmd = array();

//identifica le img nell html 
$array preg_match_all("/<img[^>]*>/"$BODY$aimgs); 
foreach(
$aimgs[0] as $imgs){

     
//restituisce il nome file completo di src="    
     
preg_match("/src=['\"][^'\"]*/"$imgs$src); 

    
//prende soltanto il nome del file (elimina src=")
    
$nomefile substr($src[0], 5);

     
//controlla che il file immagine esista, sennò esce dallo script
     
if(file_exists(IMG_MAIL_PATH.$nomefile)) {

         
//crea un array del nome del file
         
$nomefile explode('.',$nomefile); 
         
$nome $nomefile[0];
         
$ext $nomefile[1];


         
//crea la stringa immagine adattata per phpmailer
         
$sostimg "[img]cid:".$nome."[/img]";


         
//e la sostituisce con quella presente nel body
         
$BODY str_replace($imgs$sostimg$BODY);

         
//aggiunge all'array $imgcmd il nome e l'estensione del file
         
$imgcmd[] = array($nome$ext);
     } else {
         echo 
"il file immagine non è stato trovato";
         exit;     
    } 

a questo punto, non rimane che passare l'HTML a phpmailer per l'invio ($mail->body = $BODY)
e poi dichiarare l'allegato per ogni immagine presente:

Codice PHP:
foreach($imgcmd as $icmd){
$mail->AddEmbeddedImage(IMG_MAIL_PATH.$icmd[0].'.'.$icmd[1], $icmd[0], $icmd[0].'.'.$icmd[1]);

E' sicuramente migliorabile, ma intanto funziona.