Hola PHPeros!
En este tutorial voy a intentar enseñaros como se envian emails con Formato HTML en vez del Tipo Texto PLANO.
Antes debo decir que prometí postear este tutorial hace tiempo así que os pido disculpas por la tardanza, se que muchos estais muy interesados en este tema

El primer paso va a ser saber que es lo que hay que indicarle al Cliente Email para que sepa que le estamos enviando un Email con formato HTML, para ello vamos a recurrir a las cabeceras.
A continuación os pongo el codigo completo y posteriormente lo explicare
<?PHP
if (!function_exists("mail")) exit("Para utilizar este Sistema debes tener activada la funcion mail()"); //Para evitar dudas
if (isset($_POST['enviar']))
{
function email_correcto($direccion) //Chequea si una direccion es Correcta
{
$regex = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*"; //Sentencia REGEX
$regex.= "@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"; //Sentencia REGEX
if (!eregi($regex, $direccion)) return false;
else return true;
}
if (in_array(NULL, $_POST)) exit("Has dejado algun campo vacio"); //¿Algun campo vacio?
if (!email_correcto($_POST['destino']) || !email_correcto($_POST['remitente'])) exit("Introduce los Emails Correctamente");
$cabecera = "Content-type: text/html\r\n"; //La cabecera mas simple
$cabecera = "From: ".$_POST['remitente']."\r\n".$cabecera;
if (mail($_POST['destino'],$_POST['asunto'],$_POST['mensaje'],$cabecera)) echo "Email Enviado Correctamente";
else echo "Ha ocurrido algun problema, el email no ha sido enviado";
}
?>
<form method="POST">
<input type="text" value="Asunto" name="asunto" /><br />
<input type="text" value="Destinatario" name="destino" /><br />
<input type="text" value="Remitente" name="remitente" /><br />
<textarea name="mensaje">Codigo HTML</textarea><br />
<input type="submit" name="enviar" />
</form>Como veis he aplicado muchos conceptos y funciones así que voy a intentar aclarar las dudas mas obvias.
Por ejemplo, como veis he creado una funcion llamada email_correcto():
function email_correcto($direccion) //Chequea si una direccion es Correcta
{
$regex = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*"; //Sentencia REGEX
$regex.= "@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"; //Sentencia REGEX
if (!eregi($regex, $direccion)) return false;
else return true;
} En esta función he aplicado las Sentencias Regulares para comprobar la direccion que se le pasa, para ello compruebo si la direccion que se le pasa a la funcion corresponde al estandar definido por la variable $regex.
¿Entiendes la Idea? Yo le digo al codigo como deberia ser una direccion normalmente y comprueba si la direccion que le paso corresponde al estandar

Otro concepto nuevo y que no he visto nunca en ninguna parte, con ello quiero decir que ha sido idea mia y que no se si sería "inefectivo" en algunos casos es el siguiente:
if (in_array(NULL, $_POST)) exit("Has dejado algun campo vacio"); //¿Algun campo vacio?Lo que hago en esta linea es comprobar si hay algun campo dentro de lo que se ha enviado por el formulario tiene valor nulo, es decir, si esta vacio. ya me direis vuestros resultados

Y ahora llego a lo mas importante de este Tutorial, la cabecera que define el formato del Email que vamos a enviar mediante PHP:
$cabecera = "Content-type: text/html\r\n"; //La cabecera mas simpleComo veis es una cabecera muy simple y no tiene mas misterio pero si Googleais el tema un poquito mas a fondo encontrareis cabeceras enormemente trabajadas que pueden permitirte generar emails con archivos adjuntos y todo ello desde PHP!
Y como ginda, he añadido una simple comprobacion al comienzo del codigo para que todo el mundo este seguro de si el problema que tiene al aplicar este codigo es por el codigo o por su servidor, en breves palabras comprueba si se pueden enviar emails, todo para no hacer perder el tiempo a nadie

Si teneis alguna duda... A vuestra disposicion!