Envío de un formulario por correo mediante PHP
Francisco 14-01-07
Formulario por correo

Se trata de enviar un correo electrónico con los datos que ha escrito una persona al rellenar un formulario web.

El código está escrito en lenguaje PHP y sirve para cualquier tipo de formulario web. Se ha intentado que fuese un código lo máximo de sencillo y útil posible.

Para poder utilizar el código PHP hay  que personalizarlo, pero es muy fácil de hacer y no es necesario tener conocimientos de programación para realizar esta tarea.

Formulario HTML de ejemplo

<form name="form1" method="post" action="correo.php">
<table>
<tr>
<th>Nombre:</th>
<td><input name="nombre" type="text" class="campo" id="nombre" size="60"></td>
</tr>
<tr>
<th>Tel&eacute;fono:</th>
<td><input name="telefono" type="text" class="campo" id="telefono" size="60"></td>
</tr>
<tr>
<th>Correo:</th>
<td><input name="correo" type="text" class="campo" id="correo" size="60"></td>
</tr>
<tr>
<th>Tipo de oferta: </th>
<td><input name="oferta" type="radio" value="individual">individual
<br><input name="oferta" type="radio" value="grupo">de grupo </td>
</tr>
<tr>
<th>Opciones:</th>
<td><input name="catalogo" type="checkbox" id="catalogo" value="si">Recibir cat&aacute;logo
<br><input name="informarme" type="checkbox" id="informarme" value="si">Informarme de otras ofertas</td>
</tr>
<tr>
<th>Procedencia:</th>
<td><select name="procedencia" class="campo" id="procedencia">
<option value="-"></option>
<option value="N">Norte</option>
<option value="C">Centro</option>
<option value="S">Sur</option>
<option value="E">Este</option>
<option value="O">Oeste</option>
</select></td>
</tr>
<tr>
<th>Observaciones:</th>
<td><textarea name="observaciones" cols="60" rows="10" class="campo" id="observaciones"></textarea></td>
</tr>
</table>
<p>
<input type="submit" value="Enviar">
<input type="reset" value="Restablecer">
</p>
</form>

Archivo correo.php

Los  términos destacados son los que hay que personalizar para cada caso en particular.

<html>
<head>
<title>Env&iacute;o del formulario</title>
</head>
<body>
<h1>Env&iacute;o del formulario</h1>

<?php
// CONFIGURACION CORREO
$destinatario = "destinatario@jettours.es";
$destinatario_cc = "";
$destinatario_bcc = "";
$asunto = "Formulario de JetTours";
$mensaje = "";
$campos_obligatorios = Array();
$campo_nombre = "nombre"; // Campo del formulario con el nombre del visitante
$campo_correo = "correo"; // Campo del formulario con el correo del visitante
// CONFIGURACION HTML
$enviado_bien = "Su formulario ha sido enviado correctamente";
$enviado_mal = "ERROR: No se pudo enviar";

// RECOGER DATOS
reset ($_POST);
$mensaje .= "<table border=\"1\">";
while (list ($clave, $valor) = each ($_POST)) {
$clave = htmlspecialchars($clave);
$valor = htmlspecialchars(trim($valor));
$mensaje .= "<tr><th>" . $clave . "</th><td>" . $valor . "</td></tr>";
}
$mensaje .= "<tr><th>Fecha petición:</th><td>" . date("d/m/Y H:i:s") . "</td></tr>";
$mensaje .= "</table>";

// VARIABLES INTERNAS
$nombre = $_POST[$campo_nombre];
$correo = $_POST[$campo_correo];
$cabeceras = "MIME-Version: 1.0\r\n"; //para el envío en formato HTML
$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
if ($correo != "") {
$cabeceras .= "From: " . $nombre . " <" . $correo . ">\r\n"; // Dirección del remitente
$cabeceras .= "Reply-To: " . $nombre . " <" . $correo . ">\r\n"; // Dirección de respuesta
}
if ($destinatario_cc != "") { $cabeceras .= "Cc: " . $destinatario_cc . "\r\n"; }
if ($destinatario_bcc != "") { $cabeceras .= "Bcc: " . $destinatario_bcc . "\r\n"; }

if (mail($destinatario, $asunto, $mensaje, $cabeceras)) {
echo $enviado_bien;
} else {
echo $enviado_mal;
}
?>
</body>
</html>


Ejemplo de correo que se recibe

Aquí podemos ver cómo sería el correo que recibiriamos cuando alguien rellenase nuestro formulario en la web:

Ejemplo de correo recibido



24 comments:

1 → angel (not registered) says 3 year ago:

Perfecto para lo que lo voy a usar

2 → francis (not registered) says 3 year ago:

intento copiarlo todo pero no me funciona, me ayudas?

3 → francis (not registered) says 3 year ago:

que hago , copio las dos partes juntas??

4 → Francisco says 3 year ago:

Para probarlo hace falta dos archivos: (1) la página HTML dónde se debe incluir el formulario indicado y (2) la página "correo.php" que recogerá los datos del formulario y los enviará por correo a la dirección indicada dentro. (3) Además hay que subir las dos páginas al servidor web. En tu ordenador puedes instalarte un servidor web con Apache y PHP desde www.easyphp.org o www.wampserver.com; o bien puedes usar el servidor web de tu propio dominio. (4) Para probar si funciona desde el navegador web hay que poner la dirección de la página HTML del formulario, algo así como http://localhost/formulario.html

Espero que esto te sirva de ayuda y sino es así deberías adquirir unos conocimientos mínimos sobre servidores web y páginas html. Lo mejor es comprarse un buen libro sobre el tema. Además en Internet hay muchos tutoriales sobre esto. Busca en la www.wikipedia.org o en el www.google.es

5 → jorge (not registered) says 3 year ago:

hola me gustaria que me esplicaran es punto

(4) Para probar si funciona desde el navegador web hay que poner la dirección de la página HTML del formulario, algo así como http://localhost/formulario.html

por q eso es lo q me esta fallanado

6 → Francisco says 3 year ago:

Hay dos casos posibles en el punto (4):
(A) Si el servidor web está en tu propio ordenador, hay que copiar los ficheros "formulario.html" y "correo.php" a la carpeta "www". Para ver si funciona hay que ir a la dirección http://localhost/formulario.html
(B) Si tienes acceso a un servidor remoto hay que subir los ficheros "formulario.html" y "correo.php" por FTP. Luego para ver si funciona hay que poner la dirección http://www.midominio.com/formulario.html. (Es posible que tengas que acceder al panel de control de tu servidor y activar el PHP).

7 → Mario (not registered) says 2 year ago:

Hola funciona perfecto, lo único que al recibir el correo con la info del formulario no sale como en el ejemplo si no en formato html todo seguido y no en formato de tabla.

¿Cómo lo arreglo?

Muchas gracias

un saludo

8 → manuel (not registered) says 2 year ago:

como hago para ver la recepcion del mail en el outlook es decir configurar el smtp.

9 → Carlos (not registered) says 2 year ago:

hola, gracias por el codigo fuciona de maravila :D diria super codigo genial jejeje grias grias

10 → marcelo (not registered) says 2 year ago:

hola, quisiera saber si alguien me puede decir q pongo en cada parte del codigo, por ej. donde pongo la direccion de correo a la cual yo kiero q llegue...
se los agradeceria un monton..
marcelo

11 → Maximiliano (not registered) says 2 year ago:

SOLO TE PUEDO DECIR QUE ME RESULTO FANTASTICO, EXELENTE FACIL DE ENTENDER, REALMENTE TE FELICITO.
GRACIAS
MAXIMILIANO

12 → Ricardo Castillo (not registered) says 2 year ago:

GRACIAS me salvaste la vida FUNCIONA perfecto!!!

13 → extruendo (not registered) says 2 year ago:

Excelente formulario, solo una pregunta, si quiero que al enviar no salga la pagina en blanco de "Envío del formulario" y direccione a una web, q codigo y donde lo colocaria???

14 → Fatima V (not registered) says 2 year ago:

Muchisimas gracias por colocar el codigo tan sencillo y super facil de usar.
Funciona super bien.

15 → Marcel (not registered) says 2 year ago:

Estimado, gracias por el código sobre formulario, ha sido de gran ayuda.

16 → Gonzalo (not registered) says about 1 year ago:

Copie ambos archivos y lo unico que cambie fue el correo del destinatario, lo subi a una web de prueba, me manda el mensaje enviado correctamente pero no me llega nada a la casilla de correo.Si envío el formulario en blanco tambien me dice enviado correctamente.¿Que hice mal si estan copiados como en el ejemplo?

17 → issa (not registered) says about 1 year ago:

ayudame please no me sale

18 → MrDu3nD3 (not registered) says about 1 year ago:

hize comom dijistes subi los 2 archivos active la opciones php pero cuando envio el pedido me sale

Envi del formulario
Warning: mail() has been disabled for security reasons in /home/webcindario/m/r/mrdu3nd3/correo.php on line 44
ERROR: No se pudo enviar

Que puedo hace para solucionarlo gracias :)

19 → Sergio Salas /Chile/ (not registered) says about 1 year ago:

Estimado:

Muchas gracias estube buscando este tutorial, de verdad lo necesitaba ademas esta funcionando al 100 porciento muchas gracias.

20 → Jorge Calderón (not registered) says about 1 year ago:

Muchas Gracias por este gran ejemplo!!!despues de mucho buscar funcionó casi inmediatamente, GENIAL! una consulta adicional, como puedo hacer que algunos campos sean obligatorios? Muchas Gracias Nuevamente

21 → mario (not registered) says 10 months ago:

Genial funciona super bien. Muchas gracias.

22 → Orbin (not registered) says 6 months ago:

como activo el php desde el servdor, pues ya subi los archivos a la carpeta del servidor del dominio y me aparece q hay error..me puede ayudar?

23 → jdrico (not registered) says 5 months ago:

los campos obligatorios no me funcional
cuando lo mando no se donde poner mi correo
si lo pongo en destinatario
o donde lo pongo
ungeme

24 → oscar (not registered) says 2 months ago:

como hago para que el remitente reciba una copia del correo

Add your comment:

(The mail will not be published)