Comunidad de diseño web y desarrollo en internet online

Problema con formulario y ComboBox para elegir destinatario

Citar            
MensajeEscrito el 24 Ene 2008 10:54 pm
Hola Amigos, he estado tratando de hacer un formulario en Flash y PHP para enviar mensajes desde un sitio. La idea es que mediante un comboBox, pueda elegir a quien mandarle el mensaje (secretaría, gerencia, servicio tecnico, etc). Al probarlo pareciera funcionar, porque el script reconoce como "enviado", pero no me llegan los correos al mail.

Les dejo los códigos por si ven el problema. Cualquier ayuda se agradecería mucho.

El código del combobox:

Código :

//lleno combos por medio de arrays..
var diego = "[email protected]";
var carlos = "[email protected]";
var bernard = "[email protected]";

asuntodatos = ["diego","carlos","bernard"];
i_destino.dataProvider = asuntodatos;
i_destino.rowCount=4;


El codigo para mandar los datos desde el flash:

Código :

function enviar() {
   trace(i_nombre.text);
   //se crea un nuevo objeto LoadVars y se carga con los datos que vamos a enviar.
   datos_email.nombre =i_nombre.text;
   datos_email.email =i_email.text;
   datos_email.pais =i_pais.text;
   datos_email.edad =i_edad.text;
   datos_email.mensaje =i_mensaje.text;
   datos_email.destino =i_destino.ComboBox;
   
   //
   datos_email.estado ="";
   //Se programa la función que se ejecutara al recibir la respuesta del servidor
   datos_email.onLoad = function() {
      /*
      al ejecutarse la función dentro del objeto loadVars, debemos usar 'this'
      para referirnos a 'datos_email'.
      'estado' es una variable que nos devuelve el scrip php, nos referimos a ella
      como this.estado.
      */
      trace(this);
      trace(this.estado);
      if (this.estado == "enviado") {
         //si el email se ha enviado, vamos al fotograma 3.
         gotoAndStop(3);
      } else {
         //en caso contrario, vamos al fotograma 4
         gotoAndStop(4);
      }
   };
   //se envian los datos usando sendAndLoad.
   datos_email.sendAndLoad("enviar_email.php", datos_email, "post");
   gotoAndStop(2)
   }
   
/*
Activamos la utilización de unicode, esto puede darle problemas si sus scrips
no usan unicode para comunicarse con el servidor.
en este caso elimine o comente la siguiente linea:
*/
System.useCodepage = false;
/*
Si no existe, creamos el objeto loadvars que usaremos para comunicarnos con el servidor
*/
if(datos_email==null){
datos_email = new LoadVars();
datos_email.nombre ="";
datos_email.email ="";
datos_email.pais ="";
datos_email.edad ="";
datos_email.mensaje ="";
datos_email.destino ="";
datos_email.estado ="";
}
//
i_nombre.text=datos_email.nombre;
i_email.text=datos_email.email;
i_pais.htmlText=datos_email.pais;
i_edad.htmlText=datos_email.edad;
i_mensaje.htmlText=datos_email.mensaje;
i_destino.htmlText=datos_email.destino;
/*
programamos el botón para que llame a la función 
enviar al hacer clic sobre el
*/
this.b_enviar.onPress = enviar;
stop();


y por último, el código del php

Código :

<?php

   $destinatario="{$_POST['destino']}";
   
   $cabeceras="MIME-Version: 1.0\r\n";
   $cabeceras .= "Content-type: text/html; charset=utf-8\r\n";
   $cabeceras.="From: {$_POST['nombre']}<{$de}>\r\n";
   $cabeceras.="Reply-To: {$_POST['email']}\r\n";
   //el asunto del mensaje:
   $asunto="Contacto Sitio CortFray";
   //El cuerpo del mensaje:
   $cuerpo=' Ha recibido un email de '.$_POST['nombre'].' cuyo correo es '.$_POST['email'].'  del pais '.$_POST['pais'].'  de edad:  '.$_POST['edad'].'  con el siguiente contenido:';
   
   $cuerpo.='<br>'.$_POST['mensaje'].'<br>';
   //la persona wue envia el email.
   $de=$_POST['email'];


   if(mail($destinatario, $asunto, $cuerpo,$cabeceras)){
      echo utf8_encode('&estado=enviado');    
    }else{
       echo utf8_encode('&estado=no_enviado');   
    } 
?>


Espero que puedan ayudarme.
Saludos a todos

Por Diego_SSC

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2008 03:49 am
Vamos amigos, ¿nadie se anima?

Por Diego_SSC

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Ene 2008 03:58 am
en el php esto:

Código :

$destinatario="{$_POST['destino']}";


no se escribe asi.

ponlo asi:

Código :

<?php

   $destinatario=$_POST['destino'];
   
   $cabeceras="MIME-Version: 1.0\r\n";
   $cabeceras.= "Content-type: text/html; charset=utf-8\r\n";
   $cabeceras.="From: {$_POST['nombre']}<{$de}>\r\n";
   $cabeceras.="Reply-To: {$_POST['email']}\r\n";
   //el asunto del mensaje:
   $asunto="Contacto Sitio CortFray";
   //El cuerpo del mensaje:
   $cuerpo=' Ha recibido un email de '.$_POST['nombre'].' cuyo correo es '.$_POST['email'].'  del pais '.$_POST['pais'].'  de edad:  '.$_POST['edad'].'  con el siguiente contenido:';
   
   $cuerpo.='<br>'.$_POST['mensaje'].'<br>';
   //la persona wue envia el email.
   $de=$_POST['email'];


   if(mail($destinatario, $asunto, $cuerpo,$cabeceras)){
      echo utf8_encode('&estado=enviado');    
    }else{
       echo utf8_encode('&estado=no_enviado');   
    } 
?>

Por DiegoAzul

376 de clabLevel



 

Mx

firefox
Citar            
MensajeEscrito el 25 Ene 2008 01:48 pm
mm, gracias Diego, pero sigue sin funcionar. El código para que lea la variable esta Ok?

me refiero a este:

Código :

//lleno combos por medio de arrays..
var diego = "[email protected]";
var carlos = "[email protected]";
var bernard = "[email protected]";

asuntodatos = ["diego","carlos","bernard"];
i_destino.dataProvider = asuntodatos;
i_destino.rowCount=4;


No se si la lógica es así. En el CB aparecen los nombres listados en "asuntodatos", pero la idea es que mande la variable con la direccion de correo.

Gracias y Saludos

Por Diego_SSC

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Ene 2008 04:51 am
Quítale las comillas a los datos de asuntodatos:

Código :

asuntodatos = [diego,carlos,bernard];

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 26 Ene 2008 05:17 am
gracias "the Fricky", pero no es lo que esta mal. Necesito que en el combo box me muestre la el nombre del destinatario, no la variable en si (ocea el correo del destinatario). Además, ni siquiera haciendolo con variables fijas (poniendo el email como variable dentro de "asuntodatos") me lanza el correo a mi mail. Algo no está funcionando al mandar cualquier variable desde el CB al PHP.
¿nadie sabe que puede ser?

Por Diego_SSC

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Ene 2008 09:29 pm
Ok. Entonces hay que arreglar un par de cosas.

  1. Si quieres que el combo muestre el nombre, pero devuelva el correo, debes arreglar tu array de esta manera:

    Código :

    //Voy a trabajar con Strict Data Typing
    var asuntodatos:Array = new Array({label:"Diego", data:"[email protected]"}, {label:"Carlos", data:"[email protected]"}, {label:"Bernard", data:"[email protected]"});
    


  2. Ahora, para capturar el valor del ComboBox (asumiendo que es el que llamas "i_destino"), debes hacerlo de esta manera:

    Código :

    ...
    datos_email.destino = i_destino.value;
    ...
    

  3. Si quisieras capturar lo que muestra el ComboBox (que no es el caso), sería:

    Código :

    ...
    datos_email.destino = i_destino.text;
    ...
    


Supongo que es eso lo que deseas, si no es así creo que no estoy entendiendo lo que pides.
Suerte (y)

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.