Si usas un mailto: se va a abrir el gestor de correo (outllok o el que tengan instalado), con php el encargado de enviar el mail es php(mas bien el servidor smtp, php solo "le pasa" el mensaje al smtp), asi si uno no tiene un gestor de correo de todas formas puede enviar el mail y también se evita lo gorroso que es que se te habra un programa mientras navegas.
La validación del correo lo puedes hacer con javascript (lado cliente) o con php (lado servidor).
Aqui les paso un script de envio de mail un poquillo mejorado.
Código PHP:
<?
/*Función para validar e-mail con Exprexiones Regulares*/
function check_email($email) {
//caracteres permitidos en el nombre: 0-9a-Z-._ en el host: 0-9a-Z-. entre los 2: @
if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/', $email))
return False;
//Nombre debe empezar con algún caracter alfanumerico
if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/', $email))
return False;
//Nombre debe terminar con algún caracter alfanumerico
if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) )
return False;
//Host debe empezar con algún caracter alfanumerico
if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) )
return False;
#Par .- or -. or -- or .. no permitidos
if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) )
return False;
#Par ._ or -_ or _. or _- or __ no permitidos
if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) )
return False;
#Host debe terminar con '.' más 2-5 alfa para TopLevelDomain
if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) )
return False;
return True;
}
/*Si se le dio al boton submit*/
if (isset($_POST['submit'])) {
//revisa si no estan vacios los campos
if (!empty($_POST['para']) && !empty($_POST['de']) && !empty($_POST['asunto']) && !empty($_POST['mensaje'])) {
//revisa si el e-mail es valido
if (check_email($_POST['para']) && check_email($_POST['de'])) {
//asigno variables para el envio
$para = $_POST['para']
$de = $_POST['de'];
$asunto = $_POST['asunto'];
$mensaje = "$de ($_SERVER['REMOTE_ADDR']) envia el siguiente mensaje \n $_POST['mensaje']";
$headers = "From: $de \r\n";
$headers. = "To: $para \r\n";
//envio el mail
if (mail($para,$asunto,$mensaje,$headers)) {
//si se pudo enviar
echo '<script language="javascript" type="text/javascript">alert ('Gracias por tus comentarios')</script>';
}else{
//si no se pudo enviar
echo '<script language="javascript" type="text/javascript">alert('Error: El e-mail no pudo ser enviado')</script>';
}
}else{
//si el e-mail no es valido
echo '<script language="javascript" type="text/javascript">alert('El e-mail debe se valido')</script>';
}
}else{
//si algun campo quedo vacio
echo '<script language="javascript" type="text/javascript">Alert('Te falto algo')</script>';
}
}else{
?>
Aqui va el form con el atributo name correspondiente en cada campo
<?
}?>