Envio del e-mails con Actionscript 3.0 y PHP
Este ejemplo muestra como enviar un correo electrónico desde flash y AS3 , por medio de php. Para que funcione debemos tener un php subido en nuestro servidor con el siguiente código:
1 2 3 4 5 6 7 |
$email = $_POST['email']; $asunto = $_POST['asunto']; $cuerpo = $_POST['cuerpo']; mail("$email","$asunto","$cuerpo"); echo "resultado=Mensaje enviado"; |
Podemos pasar los datos necesarios a este fichero desde Flash de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
//Importo las clases necesarias import flash.display.Sprite; import flash.net.URLRequest; import flash.net.URLVariables; import flash.net.sendToURL; //Almaceno la url que vamos a cargar para enviar el email var url:String = "Aqui iría la url del php"; function Enviar(e:MouseEvent){ if(DatosCorrectos()){ //Creo las variables para enviar y recibir la informacion var enviar:URLRequest = new URLRequest(url); var recibir:URLLoader = new URLLoader(); //Creo la variable que va a ir dentro de enviar, con los campos que tiene que recibir el PHP. var variables:URLVariables = new URLVariables(); variables.email = Email_txt.text; variables.asunto = Asunto_txt.text; variables.cuerpo = Cuerpo_txt.text; //Indico el método por el que se va a enviar la información. enviar.method = URLRequestMethod.POST; //Indico que voy a enviar variables dentro de la petición enviar.data = variables; //Indico el formato de la información que se va a recibir como respuesta recibir.dataFormat = URLLoaderDataFormat.VARIABLES; //Añado listeners a recibir, para un posible error y una respuesta. recibir.addEventListener(Event.COMPLETE,Respuesta); recibir.addEventListener(IOErrorEvent.IO_ERROR,HayError); //Hago la petición al PHP recibir.load(enviar); Estado_txt.text = "Enviando..."; } } function DatosCorrectos():Boolean{ //Comprueba que ninguno de los campos esté vacío if((Email_txt.text == "") || (Asunto_txt.text == "") || (Cuerpo_txt.text == "")){ Estado_txt.text = "Debes rellenar todos los campos"; return false; } //Compruebo que el mail tenga una arroba y al menos un punto. var email = Email_txt.text; var arroba = email.split("@"); var puntos = email.split("."); if((arroba.length != 2) || (puntos.length < 2)){ Estado_txt.text = "El email no tiene el formato correcto"; return false; } return true; } //Funcion que se ejecuta al recibir una respuesta del PHP, recibiendo la variable resultado. function Respuesta(event:Event){ Estado_txt.text = event.target.data.resultado; } //Función que se ejectuta cuando no se puede cargar el PHP function HayError(event:IOErrorEvent):void { Estado_txt.text = "Error al enviar el correo"; } //Programo el botón de enviar. Enviar_bt.addEventListener(MouseEvent.CLICK,Enviar); stop(); |
COMENTARIOS
Great site.
tengo 2 preguntas.
-var url:String = «Aqui iría la url del php»;
en este paso es la direccion del servidor o nada mas el nombre de php.
-este ejemplo podria servir en el servidor apache de suse linux 10.
La url que tienes que poner es la ruta hasta el archivo php. Puede ser relativa o absoluta.
El ejemplo funcionará en cualquier servidor con PHP instalado. De todas formas la parte importante es la de Flash, que «no tiene que ver» con el servidor. Hacer esto mismo en ASP u otro lenguaje de servidor no es complicado.
El codigo me da error, por lo menos en el localhost.
este es el error que tira
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()
at flash.net::URLLoader/onComplete()
Hola Felix, seguramente es porque no se está haciendo bien el echo en el php (no devuelve la variable bien).
Qué estás poniendo en el echo de resultado???
Buenisimo pero tengo una gran duda donde va mi mail
porque solo veo que puedo poner la url del php
pero donde va mi imail asi el php carga el dato y lo
manda a mi mail.-
espero att la respuesta muchas gracias
olle, podrias pasarme el archivo PHP que con el que tu hiciste tu ejemplo de arriba, porque bueno yo hice uno asi, para mi pagina, pero en AS2, pero este es muy diferente, quisiera analisarlo y aplicarlo, pero resulta que en tu ejemplo cuando me mando un correo me aparece que me lo manda Daniel, supongo que eres tu, ahora como cambio para que salga mi nombre o mi correo?? de que envia. gracias
necesito en PHP original ese PHP que pusiste no esta completo por que le falta declarar el correo de donde se mando la informacion
HEY AMIGO, QUE CLASE DE TUTORIAL ES ESTE SI NISIQUIERA COLOCAS EL EJEMPLO COMPLETO CON LOS PHP QUE SE NECESITAN, PERO AGRADEZCO LO QUE POSTEASTE ME SIRVIO MUCHO, PERO QUE HAY DE LOS QUE NO SABEN DE PHP. DEBERIA SER MAS ESPECIFICO.
Hola, muy bueno el aporte, y tengo una pregunta, en un ejemplo, si tienes una pagina de fotos, y quieres poner la opcion de enviar a un amigo, como sería? y podrías recoger en la base de datos, cuantas veces se ha mandado esa foto??
Muchisimas gracias….
Me permites pegarlo en mi página referenciando eso si la tuya??…
mira, tengo un detalle me sale este erro 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()
at flash.net::URLLoader/onComplete()
y ya no se que hacer alguien me podría ayudar
Hola haber si me podes ayudar un poco veras quiero cargar un xml pero desde una variable la cual sela paso al swf desde js la recibe y si la presento en pantalla sale pero no lo reconoce como direccion para encontrar el xml.
DEJA TU COMENTARIO