Mandar un mail con HTML y PHP

Contactar con el profesor

Es posible montar un formulario HTML que envíe los datos a un documento PHP que será el encargado de mandar el mail en apenas unos minutos. Si eres diseñador, esta es una pequeña batalla que a menudo tienes que librar, así que espero que te sirva de ayuda.

Si quieres profundizar hasta el infinito en el aprendizaje de maquetación con HTML y de programación con PHP, puedes consultar los curos de HTML y PHP de esta misma web.

En este enlace puedes descargar el código fuente necesario para mandar un mail con PHP.

Descargar código fuente

Mandar un mail en PHP

Para mandar un mail con PHP basta con una sola línea de código. Basta con usar la función mail de PHP, que tiene una estructura muy sencilla:

<?php 
	mail($correo_destino, $asunto, $mensaje);
?>

y ya está!

Opcionalmente existe un cuarto parámetro que contiene las cabeceras.

Necesitamos un formulario HTML

Para usar la función PHP mostrada en el código anterior, debemos enviarle cierta información que será recogida en un formulario HTML. Esta información, al menos, será:

  • El mail del remitente, necesario para poder responderle.
  • El asunto
  • El propio texto del mensaje mensaje.

Así pues, escribimos el código fuente de un formulario HTML en que el que hay unos cuantos inputs y un textarea para el mensaje. Cada uno de estos elementos está identificado con un name. Usaremos ese name para poder recojer sus valores cuando lleguemos al documento PHP.

¿Cómo vinculamos el documento HTML con el PHP? El action de un formulario es el atributo que define a dónde vamos a ir cuando pulsemos el botón de envío. Por tanto, el valor del action del formulario será la ubicación del documento dónde este fichero PHP se encuentra.

<form method="post" action="pagina2.php">
	<label for="nombre">Nombre:</label>
	<input type="text" name="nombre" id="nombre"><br>

	<label for="asunto">Asunto</label>
	<input type="text" name="asunto" id="asunto"><br>

	<label for="mensaje">Mensaje: </label>
	<textarea name="mensaje" id="mensaje"></textarea><br>

	<input type="submit">

</form>

Y recoger los datos enviados con en nuestro documento PHP

Para recoger los datos enviados desde nuestro formulario HTML que utiliza el atributo method=”post”, utilizaremos $_POST y pondremos entre los corchetes el valor del atributo name de los campos del formulario cuya información quiero recoger.

Tras recoger estos datos, se los paso a la función mail. Podemos tener esta función dentro de una estructura if, que devolverá true en el caso de que el mail haya sido enviado con éxito

<?php 
	$nombre = $_POST['nombre'];
	$asunto = $_POST['asunto'];
	$mensaje = $_POST['mensaje'];

	echo $nombre. "ha dicho <br/>".$mensaje;
	if(mail('pp@pp.com', $asunto, $mensaje)){
		echo "mail enviado";
	}else{
		echo "uyuyuyuyuy";
	}
 ?>

Error super típico que suelen tener mis alumnos al hacer este ejercicio

Para poder ejecutar el código PHP de este ejemplo, necesitas un servidor web. Cuando tu código PHP se está ejecutando correctamente en un servidor web, tu no puedes ver este código PHP. Si al hacer el envío, llegas a un documento de texto en el que puedes leer el código PHP del fichero… no lo estás haciendo bien.

Por otro lado, si estás ejecutando el ejemplo en local (localhost), muy probablemente no te funcionará, ya que no tendrás un servicio de correo electrónico configurado.

Necesitarás subir tu código fuente a un servicio de alojamiento web para que el código funcione.

Advertencia

Una última cosa a tener en cuenta. Algunos servidores tienen deshabilitada la función mail de php. En algunos casos basta una llamada telefónica o un mail para que te la habiliten. En otros casos, no te la van a habilitar aunque lo solicites. En mi caso con CDMon, no he tenido problemas, pero antes, cuando estaba en Hosteruope, tuve que solicitar que me la activasen.

Por otra parte, utilizando servidores gratuitos, a menudo la función mail de php está deshabilitada por defecto. En el caso de que estes haciendo las pruebas en tu localhost, habrá que configurarlo y no te lo recomiendo si no tienes una buena razón.

Código HTML y PHP para mandar un mail

Hasta pronto!.

← Funciones en PHP
Funciones para trabajo con cadenas →

Aviso Legal | Política de privacidad