Foros del Web » Programando para Internet » PHP »

Recuperar valores de un formulario para correo

Estas en el tema de Recuperar valores de un formulario para correo en el foro de PHP en Foros del Web. Saludos. He estado buscando información por el foro, pero tras probar varios ejemplos, no termino de encontrar solución a mi problema. Tengo un formulario en ...
  #1 (permalink)  
Antiguo 15/04/2007, 01:31
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Recuperar valores de un formulario para correo

Saludos.
He estado buscando información por el foro, pero tras probar varios ejemplos, no termino de encontrar solución a mi problema.
Tengo un formulario en html, que mediante acción POST enviará los datos a un php, que los recuperará y enviará un correo al usuario "webmaster".
No consigo recuperar e imprimir dichos valores en el body del correo que se recibe.
Podriais mirarlo y ver donde esta el problema .....
Gracias de antemano...

Resumo el html ...

Código HTML:
<form id="form1" name="form1" METHOD="post" ACTION="respcontac.php">
              <input name="nombre" type="text" id="nombre" size="53" />
              <input name="direccion" type="text" id="direccion" size="53" />
              <input name="telefono" type="text" id="telefono" size="53" /></td>
               <textarea name="consulta" cols="40" rows="5" id="consulta"></textarea>
              <a href="respcontac.php" target="_self" class="ParrafoTituloBoton" >Enviar</a>
          </form> 

El codigo php....
Código PHP:
<?
           
if (!isset($_server["PHP_SELF"]))
{
$_GET $HTTP_GET_VARS;
$_POST $HTTP_POST_VARS;
$_SESSION $HTTP_SESSION_VARS;
}
  
// primero hay que incluir la clase phpmailer para poder instanciar
  //un objeto de la misma
  
   
$nombre=$_POST['nombre'];
   
$telefono=$_POST['telefono'];
   
$direccion=$_POST['direccion'];
   
$asunto=$_POST['consulta'];
   
  require 
"includes/class.phpmailer.php";

  
//instanciamos un objeto de la clase phpmailer al que llamamos 
  //por ejemplo mail
  
$mail = new phpmailer();
    
  
//Definimos las propiedades y llamamos a los métodos 
  //correspondientes del objeto mail

  //Con PluginDir le indicamos a la clase phpmailer donde se 
  //encuentra la clase smtp que como he comentado al principio de 
  //este ejemplo va a estar en el subdirectorio includes
  
$mail->PluginDir "includes/";

  
//Con la propiedad Mailer le indicamos que vamos a usar un 
  //servidor smtp
  
$mail->Mailer "smtp";

  
//Asignamos a Host el nombre de nuestro servidor smtp
  
$mail->Host "tuatenda.com";

  
//Le indicamos que el servidor smtp requiere autenticación
  
$mail->SMTPAuth true;

  
//Le decimos cual es nuestro nombre de usuario y password
  
$mail->Username "[email protected]"
  
$mail->Password "beatriz";

  
//Indicamos cual es nuestra dirección de correo y el nombre que 
  //queremos que vea el usuario que lee nuestro correo
  
$mail->From "[email protected]";
  
$mail->FromName "Contacto en Tuatenda";

  
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
  //una cuenta gratuita, por tanto lo pongo a 30  
  
$mail->Timeout=30;

  
//Indicamos cual es la dirección de destino del correo
  
$mail->AddAddress("[email protected]");
    
//$mail->AddAddress("[email protected]");


  //Asignamos asunto y cuerpo del mensaje
  //El cuerpo del mensaje lo ponemos en formato html, haciendo 
  //que se vea en negrita
  
$mail->Subject "Envio de datos de contacto desde la web";
  
$mail->Body "Interesado: " $nombre "<br>Telefono: " $telefono "<br>Direccion: " $direccion "<br>Asunto: <br>" $asunto"\n";
  
//Definimos AltBody por si el destinatario del correo no admite email con formato html 
  
$mail->AltBody "Interesado: " $nombre "   - Telefono: " $telefono "   - Direccion: " $direccion "   - Asunto: " $asunto"\n";

  
//se envia el mensaje, si no ha habido problemas 
  //la variable $exito tendra el valor true
  
$exito $mail->Send();

  
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho 
  //para intentar enviar el mensaje, cada intento se hara 5 segundos despues 
  //del anterior, para ello se usa la funcion sleep    
  
$intentos=1
  while ((!
$exito) && ($intentos 5)) {
    
sleep(5);
         
//echo $mail->ErrorInfo;
         
$exito $mail->Send();
         
$intentos=$intentos+1;    
    
   }
 
        
   if(!
$exito)
   {
    echo 
"Problemas enviando correo electrónico a ".$valor;
    echo 
"<br>".$mail->ErrorInfo;    
   }
   else
   {
    echo 
"<b>Mensaje enviado correctamente. <br>Gracias por el envío. <br> En breve nos pondremos en contacto con usted.</b>";
   } 
?>
Espero que me podais ayudar ...

Muchas gracias
  #2 (permalink)  
Antiguo 15/04/2007, 02:12
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Recuperar valores de un formulario para correo

HOla,

Ya pusiste a imprimir las variables antes del envio del mail para saber si llevan valores????? puede ser eso, porque el correo te llega bien?? con el texto pero sin el valor de las variables ??? o no te llega nada del body nisiquiera el texto que tienes como una especie de plantilla?? bueno, ya comentaras, saludos
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
  #3 (permalink)  
Antiguo 15/04/2007, 02:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 324
Antigüedad: 20 años, 8 meses
Puntos: 1
Re: Recuperar valores de un formulario para correo

Gracias por responder ...
El correo me lo pmanda perfectamente, lo que no me "imprime" en el correo son los valores de las variables.

¿Sabrías por qué puede ser?


Otra cosa. ...

Si pongo el código
<input type="submit" value="enviar" name="enviar">
en lugar del <a href...> si me lo envía ....

¿Qué código puedo poner simular un botón submit, pero con texto a modo de enlace?

Gracias

Última edición por AJDC; 15/04/2007 a las 03:03
  #4 (permalink)  
Antiguo 15/04/2007, 04:23
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Recuperar valores de un formulario para correo

Hola

Bueno, pues mira, para que funcione el href seria con este cambio

<a href="javascript:form1.submit()" class="ParrafoTituloBoton" >Enviar </a>

y pues yo puse a imprimir las variables que llegan y en efecto si estan tomando valor, asi que prueba con el href a ver si te envia el mail con los valores, de no ser asi, prueba uniendo mas las variables con el texto , es decir, donde las concatenas

"Interesado: " .$nombre. "<br>Telefono: " (etc ......)
ponlas "Interesado: ".$nombre."<br>Telefono: "(etc...)

a veces eso da problemas, y si con nada de esto se te soluciona, entonces habria que buscar a ver si falta algun header o algo parecido pero no creo, bueno, espero te sirva
__________________
Suerte.
_______________________________
"La vida es el principio de la muerte".
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 13:28.