martes, 4 de junio de 2019

Formulario que envía un email con el método POST en PHP

Disponemos de un formulario HTML que envía los datos recogidos a un script en PHP utilizando el método POST.

Código HTML

El archivo se denomina formulario2.php y pese a su extensión se trata de un archivo HTML.

 <!DOCTYPE html>  
 <html lang="es">  
 <head>  
  <meta charset="utf-8">  
  <title>formularioPHP</title>  
 </head>  
 <body>  
  <form action="actua2.php" method="post">  
   <label for="nombre">Nombre: </label>  
   <input type="text" name="nombre"><br>  
   <label for="correo">Correo: </label>  
   <input type="email" name="correo"><br>  
   <label for="mensaje">Mensaje: </label>  
   <textarea name="mensaje"></textarea><br>  
   <input type="submit" value="Enviar"><br>  
  </form>  
  <p>Envía un correo con los datos del formulario a la cuenta de correo indicada.</p>  
 </body>  
 </html>  

Utilizamos el método POS para comunicarnos con el archivo actua2.php.

El formulario que veremos se encuentra en la siguinte dirección.



Código PHP

El archivo actua2.php mostrará información sobre los datos recogidos en el formulario y si el correo ha sido correctamente enviado mostrará la siguiente pantalla.


Observe cómo se recoge con el método POST el valor de cada una de las variables del formulario. En realidad lo que se hace es recoger con POST un array con todo el contenido del formulario y luego se va pidiendo cada una de esas variables que es cada una de las posiciones del vector.

El condicional if se añade para comprobar que la instrucción mail no arroje ningún error. En caso de que no exista error quiere decir que el mensaje se ha enviado con éxito. Por lo tanto es la instrucción mail la que envía el mensaje.

mail($to, $subject, $message, $headers);

 <?php  
 $nombre=$_POST['nombre'];  
 $mensaje=$_POST['mensaje'];  
 $para=$_POST['correo'];  
 echo "Hola ".$nombre.", hemos recibido tu mensaje: <br>";  
 echo $mensaje."<br>";  
 echo "Vamos a enviar tu mensaje a la dirección de correo <b>".$para."</b><br>";  
 if(mail($para,'Mensaje de prueba',$mensaje,'From: adolfo <micuenta@miservidor.com>')){  
  echo "El email ha sido enviado exitosamente.";  
 }else{  
  echo "Se ha producido un error al enviar el email.";  
 }  
 ?>  

La expresión 'From: adolfo <micuenta@miservidor.com>' es optativa y se añade para indicar como cabecera (header) de quién procede el mensaje. Personalize esta línea cambiando este código por otro que contenga su nombre y su correo electrónico.
También podríamos haber creado unas cabeceras más complejas añadiendo direcciones de correo para enviar este mensaje como copia (Cc) o como copia oculta (Bcc).

Suponga que deseamos añadir una cabecera algo más compleja como la siguiente.

 $headers = 'From: adolfo <micuenta@miservidor.com>' . "\r\n";  
 $headers .= 'Cc: antonio <sucorreo@suservidor.com>' . "\r\n";  
 $headers .= 'Bcc: susana@trabajo.com' . "\r\n";  
   
 mail($to, $subject, $message, $headers);  

Veamos el correo correctamente recibido.


Ahora si podemos ver la dirección desde la que 'From' nos dice que se envió el mensaje.



No hay comentarios:

Publicar un comentario