Enviar formulario por correo electrónico en PHP

Uno de los puntos casi imprescindibles en un sitio web es el disponer de un mecanismo que permita el feedback entre el usuario y el responsable de dicha web. Esta comunicación se realiza habitualmente publicando una dirección de correo electrónico (poco recomendado para evitar el spam) o mediante un formulario de contacto que posteriormente envía sus datos a un email.

Vamos a ver, con un ejemplo práctico, cómo enviar los datos de un formulario por correo electrónico, implementado en PHP:

<?
if ( $HTTP_POST_VARS ) { // se han pasado variables por el método POST

$mensaje = «Nombre: «.$HTTP_POST_VARS[«nombre»].»n»;
$mensaje .= «Email: «.$HTTP_POST_VARS[«email»].»n»;
$mensaje .= «Comentarios: «.$HTTP_POST_VARS[«comentarios»].»n»;
mail(«webmaster@dominio.com», «Mensaje desde el formulario», $mensaje);
echo «Se ha enviado el mensaje.»;

} else { // no se ha enviado ningún formulario, mostrarlo entonces

echo ‘
<form action=»pagina.php» method=»
POST«>
Nombre: <input type=»text» name=»nombre» size=»20″><br>
Email: <input type=»text» name=»email» size=»20″><br>
Comentarios: <textarea name=»comentarios» cols=»20″ rows=»5″></textarea><br>
<input type=»submit» value=»Enviar»>
</form>’;

}
?>

Con este script no necesitamos utilizar 2 páginas (una para el formulario y otra para el script de envío) sino que, en función de que se hallan pasado variables por el método POST o no (es decir, si $HTTP_POST_VARS tiene contenido o no), se enviará el mensaje o se mostrará el formulario, respectivamente.