Lo mejor que puedes hacer es generar la ruta completa para que al abrir el correo se descargue del servidor ya que es mucho mas facil, en todo caso si aún quieres agregar la imagen como archivos adjuntos debes "parsear" el contenido del email para sustraer el nombre de la imagen para poder agregarlo como archivo adjunto, para eso puedes usar expresiones regulares, aparte de eso debes cambiar la ruta de la imagen para que el navegador/cliente sepa que se refiere a una imagen dentro del email...
Código PHP:
Ver original$html = <<<HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<p><img src="/elements/files/imagen1.jpg" alt=""></p>
<p><img src="/elements/files/imagen2.jpg" alt=""></p>
<p><img src="/elements/files/imagen3.jpg" alt=""></p>
<p><img src="/elements/files/imagen4.jpg" alt=""></p>
<p><img src="/elements/files/imagen5.jpg" alt=""></p>
</body>
</html>
HTML;
preg_match_all('/\/elements\/files\/(([a-zA-Z0-9_.-]+).(png|jpg|jpeg))/',$html,$imagenes);
$mail = new PHPMailer();
foreach($imagenes[0] as $img) {
/*
* aqui asegurate que el tipo de imagen corresponda al de la imagen
* ya que si no fallará, si es png debe ser imagen/png, si es bmp image/bmp o image/x-bmp
*/
$tipo = 'image/jpeg';
$mail->AddEmbeddedImage($img,'cid','name','base64',$tipo);
}
}
Por ultimo, también debes cambiar el HTML final, cambiando la ruta de la imagen por el CID de la imagen,
OJO, MUY IMPORTANTE, cada imagen debe tener un CID único!
Código HTML:
Ver original<!doctype html>
<p><img src="cid:imagen1" alt=""></p> <p><img src="cid:imagen2" alt=""></p> <p><img src="cid:imagen3" alt=""></p> <p><img src="cid:imagen4" alt=""></p> <p><img src="cid:imagen5" alt=""></p>