Enviar email con AS3 y PHP

ActionScript 3 viene con nuevos métodos para el envío y recepción de datos, en esta ocasión les presentamos un ejemplo de como enviar email con AS3 y PHP a semejanza de Enviar email con Flash y PHP pero esta vez actualizando con los nuevos métodos disponibles en AS3.

email-as3.gif

Implementando el Formulario en Flash
Sea que vamos a implementar un formulario de contácto, creamos cuatro campos de texto: txtnombre, txtempresa, txtemail y txtmensaje en los cuales el usuario ingresará sus datos. Además de ello creamos dos MovieClips btenviar y btborrar que servirán para enviar o limpiar el formulario.

Agregando Eventos a los Botones
Lo primero es agregar los eventos para el funcionamiento de los botones, para ello hacemos uso del método addEventListener de la siguiente forma:

  1. btborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
  2. btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
  3.  
  4. function onBorrar(obj:Event) {
  5.     // acción para el botón btborrar
  6. }
  7. function onEnviar(obj:Event) {
  8.     // acción para el botón btenviar
  9. }

Implementando el botón Borrar
Para el botón borrar asignamos a todos los campos del formulario a un texto vacío para de esta forma tener todos los campos limpios.

  1. function onBorrar(obj:Event) {
  2.     txtnombre.text = "";
  3.     txtempresa.text = "";
  4.     txtemail.text = "";
  5.     txtmensaje.text = "";
  6. }

Implementando el botón Enviar
El presionar el botón Envíar, se tienen que enviar los datos de los campos como variables a un script del servidor que encargue del envío del correo (En nuestro caso mail.php). Para ello hacemos uso de las clases URLVariables que permitirá definir las variables a enviar, URLRequest que permite definir a donde se enviaran los datos y bajo que método y URLLoader que permite hacer el envío de datos y la detección de este proceso.

  1. function onEnviar(obj:Event) {
  2.     // variables a enviar
  3.     var urlVars:URLVariables = new URLVariables();
  4.     urlVars.nombre = txtnombre.text;
  5.     urlVars.empresa = txtempresa.text;
  6.     urlVars.email = txtemail.text;
  7.     urlVars.mensaje = txtmensaje.text;
  8.     // opciones para el envío
  9.     var urlRequ:URLRequest = new URLRequest("mail.php");
  10.     urlRequ.method = URLRequestMethod.POST;
  11.     urlRequ.data = urlVars;
  12.     // envío y detección de la respuesta
  13.     var urlLoad:URLLoader = new URLLoader();
  14.     urlLoad.load(urlRequ);
  15.     urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
  16.     urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);
  17. }

Como se observa hemos agregado dos detectores de eventos para mostrar un mensaje de texto de acuerdo a la respuesta del proceso. Para ello implementamos los dos detectores.

  1. function onSendComplete(obj:Event) {
  2.     txtestado.text = "Mensaje Enviado";
  3. }
  4. function onSendError(obj:Event) {
  5.     txtestado.text = "Mensaje Fallido";
  6. }

Finalizando
Unimos todos los bloques de código que hemos desarrollado para obtener nuestro script en AS3 que permitirá el envío de los datos del formulario al script mail.php que se encargará del envío de correo.

  1. btborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
  2. btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
  3.  
  4. function onBorrar(obj:Event) {
  5.     txtnombre.text = "";
  6.     txtempresa.text = "";
  7.     txtemail.text = "";
  8.     txtmensaje.text = "";
  9. }
  10. function onEnviar(obj:Event) {
  11.     var urlVars:URLVariables = new URLVariables();
  12.     urlVars.nombre = txtnombre.text;
  13.     urlVars.empresa = txtempresa.text;
  14.     urlVars.email = txtemail.text;
  15.     urlVars.mensaje = txtmensaje.text;
  16.    
  17.     var urlRequ:URLRequest = new URLRequest("mail.php");
  18.     urlRequ.method = URLRequestMethod.POST;
  19.     urlRequ.data = urlVars;
  20.    
  21.     var urlLoad:URLLoader = new URLLoader();
  22.     urlLoad.load(urlRequ);
  23.     urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
  24.     urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);
  25. }
  26.  
  27. function onSendComplete(obj:Event) {
  28.     txtestado.text = "Mensaje Enviado";
  29. }
  30. function onSendError(obj:Event) {
  31.     txtestado.text = "Mensaje Fallido";
  32. }

Para ver en detalle como se envía correo con PHP, pueden leer Envíar E-mail con PHP. Pueden ver el ejemplo funcionando en mailas3 y finalmente pueden descargar los archivos fuente que incluye el script para el envío de correo en PHP.

Comentarios Total 28 comentarios


Alrevez
Publicado: 05/03/2008 6:43 am

Excelente ejemplo para iniciar!! con ese ejemplo, es ahora màs fàcil implementar un sistema de validación!


[…] “unijimpe” me ecnientro con este muy buen tutorial que muestra como hacer un formulario que se envie […]

Nacho
Publicado: 12/03/2008 10:14 am

Unijimpe, muy útil el tutorial. Pero no sé dónde debo introducir mi dirección de e-mail para que me lleguen los e-mails cuando la gente envíe el formulario desde mi web.

Perdona mi ignorancia.

Gabo
Publicado: 22/03/2008 6:31 pm

Me quede en la misma situacion de Nacho, donde debo introducir la direccion destino para que llegue el mensaje de correo?…Podrian agregar algunos fragmentos con “Alerts” para evitar el envio de campos vacios?…Gracias!.

Salvador carrasco flores
Publicado: 12/04/2008 10:35 am

Gracias por el codigo en verdad que eres una gran contribucion para la comunidad programadora…

gmancito
Publicado: 29/04/2008 7:26 pm

hice formulario en flash, tambien el archivo php… me sale q se envio, pero nunca llega a mi casilla, eso por un lado… por otro me baje el ejemplo y funciono una sola ves… cuando envio otro formulario no me llega.. q puede ser lo q pasa…

wallpapers cars
Publicado: 08/05/2008 10:20 pm

es muy bueno de verdad gracias

bribon
Publicado: 09/02/2009 7:19 pm

Hola,
buen tuto, bastante util. Solo una pregunta. ¿Sabes si se puede dar algún tipo de formato al email que recibes?, es decir, poder seleccionar la fuente o el tamaño de la misma. Tambien, porque por ejemplo no reconoce las tildes.
Un saludo

unijimpe
Publicado: 10/02/2009 9:16 am

Para darle formato al email, puedes hacerlo con PHP, en donde el lugar de envuar texto plano puedes enviar html con lo cual puedes aplicar el formato que deseas

Paul
Publicado: 01/03/2009 2:08 pm

muchas gracias por el tutorial y por el complemento que es el enviar con PHP.

Mike Morales
Publicado: 31/03/2009 10:22 am

que tal unijimpe, tengo una duda este mismo metodo tal cual esta sirve para ASP??

Gracias!

unijimpe
Publicado: 31/03/2009 12:19 pm

Si, bien podrias utilizarlo con ASP, JSP o el lenguaje de servidor que mas prefieras, el flash hace las veces de mascara para ingresar los datos solamente.

c
Publicado: 01/07/2009 7:57 pm

realmente funciona!!!!
gracias

jhonatan
Publicado: 04/08/2009 3:53 am

muy buen e intresante
pero tengo unas dudas son nuevo en esto de flash y quiero hacer este tutorial auna pagina pero nos edonde se pone el cooreo a donde me llegaran los mensajes gracias

espero tu pronta resputas saludos

Ramon
Publicado: 22/12/2009 2:00 am

Hola Unijimpe.
Ante todo darte las gracias por tan magnifico tutorial y por la paciencia que nos tienes a todos los novatos.
Tengo descargados los ultimos archivos y parecen no tener ningun error de sintaxis, ni de variables parecen totalmente perfectos para usar con as3, los he subido tal y como estan a mi web de pruebas, y al hacerlo funcionar si me da el mensaje de enviado pero sigo sin recibir nada, al archivo de mail.php le he cambiado los atributos para que sea de escitura, pero nada.
En otros foros he leido algo del php.ini que si hay que configurarlo.
¿si es ese el motivo por el cual no funciona, como se consigue?, ¿o que es lo que falla? El tuyo funciona a la primera y a nosotros los novatillos usando los mismos archivos no.
Lo tengo en http://webs.ono.com/ramonventura/ me da el mensaje de enviado pero no me llega.

Gracias otra vez por hacerlo tan compresible para nosotros pobres mortales de a pie.

katty
Publicado: 21/01/2010 7:06 pm

Hola unijimpe

Como estas? Espero q bien y feliz año 2010
Antes que nada felicitarte por tu pág. esta muy interesante. Por todos los temas que tocas , y gracias por hacer una pagina así
Y bueno sabes yo recién estoy en empezando y la verdad quiero publicar una pagina que tenga un formulario de contacto y me envié a mi correo
Eso es posible ? sin usar base de dato
Estoy usando un servidor gratuito que dice que te da uso en php
Puede ayudarme por favor?
Baje tu archivo y lo quiero probar con mi correo
Puse mi correo
y no me funciona lo que hagooooo ?

Katty Melina

2mx
Publicado: 12/03/2010 2:42 pm

este es el código php y donde poner tu email

http://blog.unijimpe.net/enviar-email-con-flash-y-php/

jose
Publicado: 19/03/2010 9:00 am

Hola unijimpe.

Estoy haciendo un formulario en as3 y he copiado tu codigo del flash y el de php. Me pone mensaje enviado pero no me llega nada a la bandeja de entrada del correo. ¿Cual puede ser el motivo?

te dejo el codigo en flash:

btborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
btborrar.buttonMode = true;
btborrar.useHandCursor = true;

btenviar.buttonMode = true;
btenviar.useHandCursor = true;

function onBorrar(obj:Event) {
txtnombre.text = “”;
txttelefono.text = “”;
txtemail.text = “”;
txtmensaje.text = “”;
}
function onEnviar(obj:Event) {
var urlVars:URLVariables = new URLVariables();
urlVars.nombre = txtnombre.text;
urlVars.telefono = txttelefono.text;
urlVars.email = txtemail.text;
urlVars.mensaje = txtmensaje.text;

var urlRequ:URLRequest = new URLRequest(“mail.php”);
urlRequ.method = URLRequestMethod.POST;
urlRequ.data = urlVars;

var urlLoad:URLLoader = new URLLoader();
urlLoad.load(urlRequ);
urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);
}

function onSendComplete(obj:Event) {
txtestado.text = “Mensaje Enviado”;
}
function onSendError(obj:Event) {
txtestado.text = “Mensaje Fallido”;
}

y el codigo del php

Te agradeceria que me contestases.

Un saludo. Y enhorabuena por el tutorial, es genial.

jose
Publicado: 19/03/2010 9:02 am

?php
if ($_POST[‘email’] != “”) {
$dest = “info@reeducacionemocional.com”;
$head = “From: “.$_POST[‘email’].”\r\n”;
$head.= “To: info@reeducacionemocional.com\r\n”;
// Ahora creamos el cuerpo del mensaje
$msg = “——————————- \n”;
$msg.= ” Comentarios \n”;
$msg.= “——————————- \n”;
$msg.= “NOMBRE: “.$_POST[‘nombre’].”\n”;
$msg.= “TELEFONO: “.$_POST[‘telefono’].”\n”;
$msg.= “EMAIL: “.$_POST[‘email’].”\n”;
$msg.= “HORA: “.date(“h:i:s a “).”\n”;
$msg.= “FECHA: “.date(“D, d M Y”).”\n”;
$msg.= “——————————- \n\n”;
$msg.= $_POST[‘mensaje’].”\n\n”;
$msg.= “——————————- \n”;
$msg.= ” Mensaje creado \n”;
// Finalmente enviamos el mensaje
if (mail($dest, “Comentarios”, $msg, $head)) {
echo “rpta=Su mensaje ha sido enviado”;
}
else {
echo “rpta=Su mensaje no ha sido enviado”;
}
}
?

Julian
Publicado: 19/04/2010 2:29 pm

hombre, estuve revisando el codigo y eso,
y lo ensaye, pero al mandar el correo me da errores de tildes y ñ… intente colocarle al php el content type y el UFT8 pero no me sirvio…
ud ssabe que podria ser???
el email lo manga a un correo gmail :S

David
Publicado: 01/06/2010 10:00 pm

Hola que tal, mi problema es peculiar.

Los correos me llegan sin ningun problema, pero el arhivo de flash activa la funcion de Envio Fallido. Pero el correo llega sin ningun problema.. alguna idea de porque puede pasar eso?

javier ortis
Publicado: 11/09/2010 1:22 pm

muy ilustrativo el tutorial, el problema es que a mi me sale mensaje enviado, cuando no he escrito nada, y tambien mensaje enviado cuando si he escrito pero no llega al destinatario, te agradesco que me ayudaras de antemano. aqui te adunto los codigo del fla

btborrar.addEventListener(MouseEvent.MOUSE_DOWN, onBorrar);
btenviar.addEventListener(MouseEvent.MOUSE_DOWN, onEnviar);
btborrar.buttonMode = true;
btborrar.useHandCursor = true;

btenviar.buttonMode = true;
btenviar.useHandCursor = true;

function onBorrar(obj:Event) {
txtnombre.text = “”;
txtempresa.text = “”;
txtemail.text = “”;
txtmensaje.text = “”;
}
function onEnviar(obj:Event) {
var urlVars:URLVariables = new URLVariables();
urlVars.nombre = txtnombre.text;
urlVars.empresa = txtempresa.text;
urlVars.email = txtemail.text;
urlVars.mensaje = txtmensaje.text;

var urlRequ:URLRequest = new URLRequest(“mail.php”);
urlRequ.method = URLRequestMethod.POST;
urlRequ.data = urlVars;

var urlLoad:URLLoader = new URLLoader();
urlLoad.load(urlRequ);
urlLoad.addEventListener(Event.COMPLETE, onSendComplete);
urlLoad.addEventListener(IOErrorEvent.IO_ERROR, onSendError);
}

function onSendComplete(obj:Event) {
txtestado.text = “Mensaje Enviado”;
}
function onSendError(obj:Event) {
txtestado.text = “Mensaje Fallido”;
}

y el codigo del php

muchas gracias de antemano mi amigo

Alejandro
Publicado: 27/01/2011 6:48 am

Hola; saludos

he seguido el tutorial y cuando le doy a ENVIAR me da “ENVIADO”,
pero no me llega el email.

en el archivo .php he puesto lo siguiente:

Pero al abrielo con dreamweaver me da un mensaje que no entido “Esta pagina puede tener archivos relacionados dinamicamente que solo el servidor puede detectar” y al lado sale boton detectar – lo apreto pero me dice uqe no ha sido posible detectar archivos relacionados dinamicamente.

ALGUIEN SABE QUE ES LO QUE ESTOY HACIENDO MAL ????
MI EMIAL ES alejandro@alejandrosans.jazztlel.es
gracias

Alejandro
Publicado: 27/01/2011 6:54 am

<?php
if ($_POST['email'] != "") {
$dest = $_POST["info@aldesign.es"];
$head = "From: ".$_POST['email']."\r\n";
// Ahora creamos el cuerpo del mensaje
$msg = "------------------------------- \n";
$msg.= " Comentarios \n";
$msg.= "------------------------------- \n";
$msg.= "NOMBRE: ".$_POST['nombre']."\n";
$msg.= "EMPRESA: ".$_POST['empresa']."\n";
$msg.= "EMAIL: ".$_POST['email']."\n";
$msg.= "HORA: ".date("h:i:s a ")."\n";
$msg.= "FECHA: ".date("D, d M Y")."\n";
$msg.= "------------------------------- \n\n";
$msg.= $_POST['mensaje']."\n\n";
$msg.= "------------------------------- \n";
$msg.= " \n";
// Finalmente enviamos el mensaje
if (mail($dest, "Comentarios", $msg, $head)) {
echo "rpta=ok";
} else {
echo "rpta=error";
}
}
?>

eduardo
Publicado: 06/07/2011 2:56 am

ya solucione el problema por el cual no mostrava nada en la tabla
en esta linea:
var urlRequ:URLRequest = new URLRequest(“mail.php”);
cambienla por
var urlRequ:URLRequest = new URLRequest(“http://localhost/ruta de tu archivo …./tu archivo.php”);
espero que lo entiendan
y gracias por la explcacion de todolo demas me sirvio de mucho

jerika fuenzalida
Publicado: 12/01/2012 6:33 am

hola a todos con un gusto ayudarte bueno ahora te dejo un código php para funciona llegara un correo gmail es:

mail.php

espero que les sirva, un saludos a todos desde Chile.-

Jerika

jerika fuenzalida
Publicado: 12/01/2012 6:40 am

http://jerikaf.dibujo.pixel.com/mail.php ver codigo para funciona llegar código gmail


[…] deciros que soy un profano en php, no tengo ni idea. Mmm… He seguido el siguiente tutorial http://blog.unijimpe.net/enviar-email-con-as3-y-php/ Y cuando lo utilizo el archivo flash me dice " enviado correctamente" Pero el email nunca […]

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)