Comunidad de diseño web y desarrollo en internet

Envío de emails en Flash CS3 con PHP y Actionscript 3

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):

Código :

<?php
    $cuerpo = "Nombre: "    . $HTTP_POST_VARS["nombre"] . "\n" 
          . "Apellidos: " . $HTTP_POST_VARS["apellidos"] . "\n"
          . "Email: "    . $HTTP_POST_VARS["email"];
   
   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.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate