La gran mayoría de nosotros requerimos en nuestras webs incluir formularios de envío de correo, ya sea para contacto, reservas, etc...
He buscado esto por la Web, pero no lo he encontrado, al menos a mi gusto, o solo en Flex (el cual no manejo actualmente).
Aquí muestro de manera muy sencilla (apto para principiantes), cómo enviar un correo electrónico y recibir respuesta en Flash de confirmación del envío.
Primero hay que crear un nuevo archivo de flash.
Insertar (para este ejemplo) 3 cuadros de texto de tipo input.
Insertar 2 cuadros de texto de tipo dynamic.
Crear un botón
Nombres de los campos Input:
txtNombre
txtApellidos
txtEmail
Nombres de los campos Dynamic:
lbRespuesta
lbError
Nombre del botón:
btEnviar
Se verá de esta forma:
Ahora solo hay que agregar en el primer frame (donde está el formulario) este código AS3 (dentro del código va una pequeña explicación):
Código :
//Función que se ejecuta al presionar el botón btEnviar. function irAEnviar(event:MouseEvent):void {
//Creamos misVariables la cual contendrá nuestros campos. var misVariables:URLVariables = new URLVariables();
//Definimos los campos y les agregamos el valor de las cajas de texto. misVariables.nombre = txtNombre.text; misVariables.apellidos = txtApellidos.text; misVariables.email = txtEmail.text;
//Creamos la instancia pedido que contendrá los datos de envío. var pedido:URLRequest = new URLRequest();
//Pasamos los datos al pedido, el método de envío y le cargamos misVariables. pedido.url = "http://www.tuDominio.com/correo/enviarCorreo.php"; pedido.method = URLRequestMethod.POST; pedido.data = misVariables;
//Creamos la instancia cargador. var cargador:URLLoader = new URLLoader();
//Damos formato de Variables a cargador . cargador.dataFormat = URLLoaderDataFormat.VARIABLES;
//Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler. cargador.addEventListener(Event.COMPLETE, completeHandler);
//intentamos cargar el pedido y si hay algún error lo detectamos try { cargador.load(pedido); } catch (error:Error) { lbError.text= "Error en el envío"; }
//Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal. function completeHandler(event:Event):void { lbRespuesta.text=event.target.data.respuestaPHP; } }
//Listener que está esperando el Click en el btEnviar para ejecutar la función irAEnviar btEnviar.addEventListener(MouseEvent.CLICK, irAEnviar);
Guardamos nuestro archivo flash con el nombre Correo (o el que quieran) y presionamos F12 para publicarlo.
Ahora hay que crear el archivo PHP que enviará el mail (Es la dirección que encuentran en el código Actionscript de arriba):
if(mail("tuCorreo@recibir.com","Forma de contacto",$cuerpo)){ echo "respuestaPHP=Mensaje enviado"; }else{ echo "respuestaPHP=Error, mensaje no enviado"; }; ?>
Lo guardamos con el nombre enviarCorreo.php
Ahora solo subimos los archivos al servidor (hay que subirlos a un servidor que pueda enviar correo, si no, no funcionará), el HTML que contiene el SWF, el SWF y el PHP.
Capturamos datos y presionamos enviar, debe verse de la siguiente manera:
¡Listo, tenemos nuestro formulario de envío!
Ahora solo nos resta (si deseamos) cambiar los campos por los que necesitamos y agregarle las validaciones necesarias.
hey muchas gracias lo voy a probar..!ª Por:jripper
Muy interesante, de hecho ando buscando un server que soporte php para poder cargarlo, ya que en geocites no me da nada, pero en fin. Me gusto la manera tan digerible en la que explicates el problema, pero hasta no ver no creer je je je. suerte y grax, cuando tenga los resultados te informaré grax. Por:jashiser
Pruebalo y avisas, verás que es así de fácil Por:Sr. QUHO
1084: Error de sintaxis: se esperaba identifier antes de function.
por que me sale ese error algo hize mal ??????????
ayuda por favor Por:aprendis_blog
YA SOLUCIONES ESE ERROR AHORA LO QUE ME DICE ES ESTO 1120: Acceso a una propiedad lbError no definida. 1120: Acceso a una propiedad lbRespuesta no definida. AHORA QUE ESTARE HACIENDO MAL?????? Por:APRENDIS_blog
Hola, encontre este tutorial muy util, pero sabes ya lo hice todo, tal cual, pero me sale el siguiente error:
TypeError: Error #2007: El valor del parámetro text debe ser distinto de null. at flash.text::TextField/set text() at MethodInfo-1() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/flash.net:URLLoader::onComplete()
Lo llenas y a la hora de mandar, sale ese error, aunque si manda el mensaje al correo asignado, sale esa ventana y no te dice si se envio o no.
Espero que me puedan ayudar, gracias. Por:Alfredo_blog
Hola, muy bueno el tuto! pero debo tener algo mal porque me da el mismo error que a Alfredo_blog, saben que puede ser?
TypeError: Error #2007: El valor del parámetro text debe ser distinto de null. at flash.text::TextField/set text() at MethodInfo-213() at flash.events::EventDispatcher/flash.events:EventDispatcher::dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/flash.net:URLLoader::onComplete()
Yo lo estoy probando sobre xampp (localHost), voy a ver sobre un server "real", pero no tengo muchas esperanzas... alguna ayudita?
Sr. QUHO :
Ahora solo subimos los archivos al servidor (hay que subirlos a un servidor que pueda enviar correo, si no, no funcionará), el HTML que contiene el SWF, el SWF y el PHP.
Un favor soy inexperto en esto pero curioso, alguien me puede decir como hago para poner el codigo en flash, a que opcion voy o cuales son los pasos a seguir. De antemano agradezco por su ayuda y sorry por la ignorancia. Por:u2alej_blog
Muy buen tutorial, a mi si me funciona lo de enviar el correo, el unico problema que tengo es que parece que no esta recibiendo la respuestaPHP y cuando le doy click al boton de submit/enviar no recibo ninguna repuesta en mi pagina aunque si me envia el correo. Algun consejo? Gracias! Por:Renata_blog
Pon cuidado en esta parte en Flash:
//Listener de cargador que espera se COMPLETE la carga para ejecutar la función completeHandler. cargador.addEventListener(Event.COMPLETE, completeHandler);
//intentamos cargar el pedido y si hay algún error lo detectamos try { cargador.load(pedido); } catch (error:Error) { lbError.text= "Error en el envío"; }
//Aquí obtenemos la respuesta del PHP para confirmar en flash que todo salió bien o mal. function completeHandler(event:Event):void { lbRespuesta.text=event.target.data.respuestaPHP; }
Y en esta parte en el PHP: if(mail("tuCorreo@recibir.com","Forma de contacto",$cuerpo)){ echo "respuestaPHP=Mensaje enviado"; }else{ echo "respuestaPHP=Error, mensaje no enviado"; };
Revisa bien los nombres de tus variables y toda la sintaxis.
Muchas Gracias. El problema por el cual no estaba recibiendo la respuesta de PHP fue que cree el archivo de PHP usando el editor de Dreamweaver y por default agrega codigo de HTLM, lo que hice fue que inclui el codigo de PHP dentro del body del HTML y eso estaba impidiendo que recibiera respuestaPHP en flash. La solucion fue eliminar el codigo de HTML y dejar el codigo de PHP solo. Mi forma ya funciona y me quedo muy claro gracias al tutorial como se comunican Flash y PHP. Gracias otra vez! Por:Renata_blog
Muy buena la explicacion, soy princiapiante en esto asi es que se me presenta una duda: Si quiero agregar un campo donde el usuario pueda escribir el texto del mail como hago? Muchas gracias. Por:Vero_blog
Inserta un caja mas de texto y la agregas en el AS en esta parte:
Código :
//Definimos los campos y les agregamos el valor de las cajas de texto. misVariables.nombre = txtNombre.text; misVariables.apellidos = txtApellidos.text; misVariables.email = txtEmail.text; misVariables.mensaje= txtMensaje.text;
mira muy bueno el tuto pero cuando lo hago en flash me tira el erro (es obvio xq no llega al dominio)pero una vez q lo subo hago click y no hace nada, no lo envia ni nada y segun lo q veo esta todo bien te dejo mi mail x las dudas emmanuelbolli@hotmail.com Por:Emmanuel_blog
Lo primero que hay que verificar, es que tu servidor tenga la capacidad de enviar correos. Prueba accediendo directamente (por la URL) a tu archivo .PHP (el que envía el correo) y luego revisa tu correo. Si tu servidor funciona, debes recibir un mail.
también recuerda que en: if(mail("tuCorreo@recibir.com","Forma de contacto",$cuerpo)){
Debes de cambiar "tuCorreo@recibir.com" POR tu dirección y nombre de dominio donde deseas recibirlo, ejemplo: if(mail("emmanuelbolli@hotmail.com","Forma de contacto",$cuerpo)){
Tengo el mismo problema y no se por q no me sale aun.. el envio de mail si me sale pero no lee la respuesta del php y lo hago justo como aqui ayuda Por:Carmen_blog
Es raro, mándame un MP para tratar de resolverlo y no saturar el post, ya si encontramos la solución la publicas aquí mismo.
Gracias, lo probé y funciona bien. Soy nuevo por aquí. Saludos! Por:oracito_blog
Muy bien, es bueno escuchar eso
* leer, si, quise decir eso, leer, si quise decir leer, leer eso, es bueno leer eso, si eso dije, no hay duda. Por:Sr. QUHO
lo he provado y me sale esto:
Error: Error #2101: La cadena transmitida a URLVariables.decode() debe ser una cadena de consulta con formato URL codificado y pares nombre/valor. at Error$/throwError() at flash.net::URLVariables/decode() at flash.net::URLVariables$iinit() at flash.net::URLLoader/flash.net:URLLoader::onComplete()
pero si me registra los datos que yo quiero Por:Ricardo_blog