Foros del Web » Programando para Internet » PHP »

Envío de Formulario al Correo

Estas en el tema de Envío de Formulario al Correo en el foro de PHP en Foros del Web. Buenas y ante todo muchas gracias por vuestra atención. Llevo desde hace mucho tiempo intentando hacer un formulario que se enviara automáticamente a un correo ...
  #1 (permalink)  
Antiguo 26/09/2009, 14:05
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Envío de Formulario al Correo

Buenas y ante todo muchas gracias por vuestra atención.

Llevo desde hace mucho tiempo intentando hacer un formulario que se enviara automáticamente a un correo X sin conseguirlo, incluso alguna vez pedí ayuda aquí y nada tampoco. Ha pasado un tiempo y dejé el proyecto abandonado y ahora quiero acabarlo pero ando muy frio con el php.

Me gustaría si es posible que me explicarais como hacer un formulario desde 0 y como se configura el servidor.
  #2 (permalink)  
Antiguo 26/09/2009, 14:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

Hola FerranQ,

Revisa en las FAQs del foro y aquí: http://www.php.net/variables.external

Saludos.
  #3 (permalink)  
Antiguo 26/09/2009, 14:49
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

vale, de eso si me acuerdo

lo del array con las variables que son cada uno de los campos del formulario, recuerdo que también usaba la función mail(), pero vamos, que despues de hacer el script y revisarlo 20 veces nunca conseguí que funcionara.

Aquí dejo el script para enviar el formulario:

<?php

$nombre =$_REQUEST['nombre'];
$email =$_REQUEST['email'];
$telefono =$_REQUEST['telefono'];
$consulta =$_REQUEST['consulta'];

$header ="From: " . $email . " \r\n";
$header ="X-Mailer: PHP/" . phpversion() . " \r\n";
$header ="Mime-Version: 1.0 \r\n";
$header ="Content-Type: text/plain";

$destinatario ="[email protected]";
$asunto ="Petición de contacto";

$mensaje= 'De:'.$email."\r\n";
$mensaje= 'Teléfono:'.$telefono."\r\n";
$mensaje= 'Nombre:'.$nombre."\r\n";
$mensaje= 'Consulta:'.$consulta."\r\n";

mail($destinatario,$asunto,utf8_decode($mensaje),$ header);
echo "Correo Enviado";

?>
  #4 (permalink)  
Antiguo 26/09/2009, 17:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

El script se ve bien, revisa el resultado de la función mail, y revisa que tengas un servidor SMTP instalado en tu máquina para que funcione correctamente.
  #5 (permalink)  
Antiguo 26/09/2009, 18:12
Avatar de sebasnob  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Envío de Formulario al Correo

coincido, yo preguntaria:

if(mail($destinatario,$asunto,utf8_decode($mensaje ),$ header)){
echo "enviado";
}

Si la funcion mail te devuelve algun error, postealo y a lo mejor te podemos ayudar...
  #6 (permalink)  
Antiguo 26/09/2009, 21:45
Avatar de kuriel  
Fecha de Ingreso: febrero-2009
Mensajes: 240
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Envío de Formulario al Correo

Te facilito la vida:

http://www.coffeecup.com/form-builder/

Solo es necesario saber poquitin de ingles, al final de que construyas tu formulario, te pide tu e-mail para mandar ahi los datos del formulario...

Por cierto, es un programa, no es la web la que hace los formularios.

Asi que te da los archivos y tu puedes ver los codigos...
__________________
Si todas las URL's que tienes o visitas te parecen largas, visita www.korto.tk - También protege de rastros y con contraseñas tus páginas o URL's.
  #7 (permalink)  
Antiguo 28/09/2009, 03:30
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

Gracias por el programa, lo estoy probando ahora mismo aunque me da a mi que el problema está en la configuración del servidor. Para probarla usé un servicio de hosting llamado zobyhost, aunque nunca me quedó claro como configurar o comprobar que permitía enviar formularios al correo. Si sabeis de algún servicio de hosting (a poder ser gratuito) que permita el envío de formularios al correo tambíen se agradecería que me lo hicierais saber. Gracias

EDIT: Después de montar el servidor web con easyphp y el servidor de correo usando QK SMTP me tira el siguiente error:

Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in F:\easyphp\www\Web Herbalife\enviarformulario.php on line 21

Revisé el php.ini y parece que está bien, el "From:" de la cabecera es el que veis en el codigo arriba, ya no se por donde coger esto, se me queda grande U.U"

Última edición por FerranQ; 28/09/2009 a las 09:50
  #8 (permalink)  
Antiguo 28/09/2009, 10:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

Revisa en el php.ini la linea sendmail_from y revisa que este descomentada (sin el ;).

Saludos.
  #9 (permalink)  
Antiguo 29/09/2009, 07:01
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

la linea sendmail_from estaba comentada, menudo fallo :/.

Bueno, ahora con este fallo corregido volvi a probar, y al parecer ningún problema ni en PHP ni en el QKSMTP aunque reviso el correo y no llega nada... (cambié la cuenta de hotmail por una de gmail)
  #10 (permalink)  
Antiguo 29/09/2009, 08:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

Revisa los logs de tu programa (QKSMTP) y verifica si se estan enviando o no los correos, ya que por parte de PHP si te indica que todo fue correcto no puedes hacer mas, mas que checar la configuración del servidor SMTP.

Saludos.
  #11 (permalink)  
Antiguo 29/09/2009, 11:58
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

¿y que es exactamente lo que tengo que revisar en la configuración SMTP?
  #12 (permalink)  
Antiguo 29/09/2009, 12:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

Pues sí el correo lo recibio desde el script PHP y este esta en la cola de envío, si llega a estar en la cola entonces ver si pudo conectarse al servicio remoto para hacer entrega del correo. Toda esa información la encuentras en los logs.

Saludos.
  #13 (permalink)  
Antiguo 29/09/2009, 14:18
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

¡ahh eso! Si si revisé el log y me indica que el mensaje se envió, ¿puede ser que el problema esté en el servidor de gmail?
  #14 (permalink)  
Antiguo 29/09/2009, 15:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Envío de Formulario al Correo

Exacto, si el log dice que se envió entonces el problema no esta en tus archivos si no ya en Gmail es probable que este catalogando tu correo como SPAM, ya que muchas direcciones que son dinámicas las cataloga de esa forma.

Saludos.
  #15 (permalink)  
Antiguo 29/09/2009, 17:10
Avatar de kharen  
Fecha de Ingreso: septiembre-2009
Mensajes: 75
Antigüedad: 14 años, 7 meses
Puntos: 2
Pregunta Respuesta: Envío de Formulario al Correo

Cita:
Iniciado por FerranQ Ver Mensaje
Aquí dejo el script para enviar el formulario:

<?php

$nombre =$_REQUEST['nombre'];
$email =$_REQUEST['email'];
$telefono =$_REQUEST['telefono'];
$consulta =$_REQUEST['consulta'];

$header ="From: " . $email . " \r\n";
$header ="X-Mailer: PHP/" . phpversion() . " \r\n";
$header ="Mime-Version: 1.0 \r\n";
$header ="Content-Type: text/plain";

$destinatario ="[email protected]";
$asunto ="Petición de contacto";

$mensaje= 'De:'.$email."\r\n";
$mensaje= 'Teléfono:'.$telefono."\r\n";
$mensaje= 'Nombre:'.$nombre."\r\n";
$mensaje= 'Consulta:'.$consulta."\r\n";

mail($destinatario,$asunto,utf8_decode($mensaje),$ header);
echo "Correo Enviado";

?>
Hola,

Yo también estoy tratando de enviar un formulario a un correo (todavia no subi la pagina a un hosting), y he probado este codigo que estoy citando. Hice tal cual indica pero me sale el siguiente error:

Notice: Undefined index: txtnombre in C:\wamp\www\infotec_sa\contactenos.inc.php on line 88
Notice: Undefined index: txtempresa in C:\wamp\www\infotec_sa\contactenos.inc.php on line 89

Notice: Undefined index: txtemail in C:\wamp\www\infotec_sa\contactenos.inc.php on line 90
Notice: Undefined index: txttelefono in C:\wamp\www\infotec_sa\contactenos.inc.php on line 91
Notice: Undefined index: msg in C:\wamp\www\infotec_sa\contactenos.inc.php on line 92

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\infotec_sa\contactenos.inc.php on line 108
Correo Enviado

Al parecer dice que revise si tengo un servidor SMT y un puerto 25. No entiendo mucho sobre eso. Porfavor me podráin explicar de cero.
Yo instalé el PHP en mi máquina con el WAMP, según veo es de PHP version 5.1.0, y el puerto por defecto es el 80.
Y por cierto, el correo al que quiero que envie no es un conocido como hotmail, yahoo, gmail, etc, sino a una cuenta de correo de un dominio: [email protected] algo asi, pero para probar empezaria enviando primero a un correo en yahoo.es



Este es mi codigo:

<?php

$nombre =$_REQUEST['txtnombre'];
$empresa =$_REQUEST['txtempresa'];
$email =$_REQUEST['txtemail'];
$telefono =$_REQUEST['txttelefono'];
$consulta =$_REQUEST['msg'];

$header ="From: " . $email . " \r\n";
$header ="X-Mailer: PHP/" . phpversion() . " \r\n";
$header ="Mime-Version: 1.0 \r\n";
$header ="Content-Type: text/plain";

$destinatario ="[email protected]";
$asunto ="Petición de contacto";

$mensaje= 'De:'.$email."\r\n";
$mensaje= 'Teléfono:'.$telefono."\r\n";
$mensaje= 'Nombre:'.$nombre."\r\n";
$mensaje= 'Empresa:'.$empresa."\r\n";
$mensaje= 'Consulta:'.$consulta."\r\n";

mail($destinatario,$asunto,utf8_decode($mensaje),$ header);
echo "Correo Enviado";

?>




Muchas gracias
  #16 (permalink)  
Antiguo 30/09/2009, 03:18
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

Bueno, vamos por partes que yo aunque se un poco tampoco soy un experto ;D

Como sabrás el _REQUEST es un array cuyos índices son cada una de las casillas/checkbox o lo que sea de tu formulario, lo que puede estar pasando es que estén mal indicados los índices o estén vacios (ahi si no estoy seguro).

En cuanto a lo del error del SMTP te está indicando que no encuentra el servidor SMTP en "localhost" (tu PC), para arreglar eso tienes que instalar un servidor SMTP (yo uso QK SMTP server 3).
  #17 (permalink)  
Antiguo 30/09/2009, 09:27
Avatar de kharen  
Fecha de Ingreso: septiembre-2009
Mensajes: 75
Antigüedad: 14 años, 7 meses
Puntos: 2
Información Respuesta: Envío de Formulario al Correo

gracias FerranQ.
Me parece que en mi PC no esta el SMTP ya que no hay ninguna cuenta en mi OutlOkk
Voy a ver que me lo instalen. Cualquier otra duda recurro aqui.
  #18 (permalink)  
Antiguo 10/10/2009, 10:08
 
Fecha de Ingreso: abril-2009
Ubicación: Ámsterdam
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Envío de Formulario al Correo

Bueno, después de sudar un poco conseguí hacer funcionar bien los formularios, ahora ya está mi web alojada en un servidor (gratuito y con sendmail on :D).

Muchas gracias por vuestra ayuda ^^
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 19:23.