Foros del Web » Programando para Internet » PHP »

No se funciona envio formulario por email

Estas en el tema de No se funciona envio formulario por email en el foro de PHP en Foros del Web. Hola he probado el código de un ejemplo que cojí del "Taller de PHP" para enviar el contenido de un formulario por correo a una ...
  #1 (permalink)  
Antiguo 15/03/2005, 13:18
 
Fecha de Ingreso: marzo-2004
Ubicación: Canarias
Mensajes: 85
Antigüedad: 13 años, 8 meses
Puntos: 1
Exclamación No se funciona envio formulario por email

Hola he probado el código de un ejemplo que cojí del "Taller de PHP" para enviar el contenido de un formulario por correo a una cuenta, el cual muestro a continuación:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Mándanos tus comentarios</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envio_correo.php" method=post>
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

//mando el correo...
mail("[email protected]","Formulario recibido",$cuerpo);

//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>

Pero cuando lo ejecuto me sale este error:

Warning: Failed to Connect in c:\cursophp4\envio_correo.php on line 29
Gracias por rellenar el formulario. Se ha enviado correctamente.

La linea 29 es en donde está la función "mail".
Disculpen si es una chorrada pero estoy empezando un poco a hacer cosillas con PHP y seguro que se me escapan muchas cosas. Gracias de antemano.
  #2 (permalink)  
Antiguo 15/03/2005, 14:14
 
Fecha de Ingreso: agosto-2004
Mensajes: 347
Antigüedad: 13 años, 3 meses
Puntos: 3
Hola

supongo que sabes que el archivo se llama a si mismo, así que supongo que el fallo no está ahí.

Si lo estás probando en local, a mi tampoco me funcionaba, pero una vez lo subí al server funcionó
  #3 (permalink)  
Antiguo 15/03/2005, 14:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La función mail() de PHP no envia el e-mail en sí .. tan sólo lo entrega al "MTA" (Mail Transfer Agent) para su envio definitivo.

Es decir .. si tu usas tu PC como "servidor" .. requieres que te instales un servidor STMP en tu PC .. Si usas windows (como parece) .. puedes instalar QK SMT Server o cualquier otro. Con que sea un servidor SMTP sobra (no te lies con servidores SMTP/POP/IMAP .. no es necesario para esto).

PHP en su php.ini le indicas donde (en que IP) corre tu servidor SMTP .. por defecto dice "localhost" haciendo referencia al PC que corre PHP que supongo que al final será el que ejecute tu servidor SMTP. Si no tienes algún firewall/router que impida abrir el puerto del SMTP que use tu servidor SMTP (normalmente el 25) .. debería funcionar todo correctamente.

También podrías usar el servidor SMTP de tu proveedor ISP de alguna cuenta de correo SMTP que uses (configurando su nombre/IP en SMTP = .. de tu php.ini) .. En ese caso .. .mail() no permite autentificación .. así que no te servirá si así lo requiere. Para ese caso deberías usar la classe PHP Mailer (http://phpmailer.sourceforge.net) o alguna similar que permita enviar el e-mail directo por SMTP y que permita autentificación.

Un saludo,
  #4 (permalink)  
Antiguo 16/03/2005, 01:35
 
Fecha de Ingreso: marzo-2004
Ubicación: Canarias
Mensajes: 85
Antigüedad: 13 años, 8 meses
Puntos: 1
Función Mail

Lo probaré, muchas gracias a los dos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:45.