Entonces el problema son los while.
Hay una lista de emails, por cada email una lista de productos. Por tanto, tu email debe enviarse al finalizar el listado de productos para cada email, de lo contrario pierdes la información, el pseudo código sería
Código PHP:
Ver original$sql = "select * from correos";
//MIentras haya direcciones de correo
while($correos)
{
$sql2 = "select * from productos where correo = $correo";
//preparar y enviar el mail
$mail->Send();
//Fin de un correo, empezar con el siguiente
}
Tal como lo haces ahora los resultados son imprevisibles porque sólo haces una select de correos y una de productos. A ver si sirve, saludos