Imagino que los datos los sacas de un BDD, asi pues te paso una funciocilla que te puede ir bien
Código PHP:
function mostrar_html($tema, $variables)
{
$cod = implode("", @file($tema));
ob_start();
extract($variables);
eval('?>'.$cod.'<?);
$temp=ob_get_contents();
ob_end_clean();
return $temp;
}
Bien te la explico un poco a ver si se:
La variable $tema es la ruta de tu archivo html, el este archivo tienes de configunar las variables que quieras que se personalicen , bien pues escribes esto en donde quieras que se escriba en contenido de una variable, el nombre por ejemplo
Código PHP:
//codigo html ....
Estimado Sr <?=$nombre?> <?=$apellidos?> :
//codigo html
escribir una variable asi en un archivo html es como si hicieras un echo en un archivo php.
Lo que es importante esque el nombre de las variables coincidan con el campo de tu tabla de la base de datos que quieres que salga en tu email.
bien; y la variable $variables seria el array que te sale despues de la consulta por ejemplo
Código PHP:
$tema="ruta_al_archivo/archivo.htm";
$asunto"prueba de boletin";
$remitente="[email protected]";
$result=mysql_query("SELECT * FROM usuarios ") or die (mysql_error());
while ($query=mysql_fetch_array($result)){
$html_personalizado= mostrar_html($tema, $query)
if(!mail($query['email'], $asunto, $html_personalizado,$remitente))
echo "no se ha podido enviar este ".$query['email'];
else echo "correcto se ha enviado este ".$query['email'];
}//fin while
No lo he probado quizas haya algun error de sintaxis o algo que me he olvidado pero mas o menos es asi, solo lo tienes de adaptar a tus necesidades..
Por cierto si tienes de enviar muchos mails pon
set_time_limit(0); para que no se corte, aunque si son muchos miles este script es un poco pobre seria mejor como ya te he dicho antes usar una clase SMTP
espero que te sirva
un saludo