La presente guia te permitirá enviar email desde un Fflash mediante la funcion mail() de php, para ello utilizaremos LoadVards() de ActionScript para enviar y recibir variables a PHP. Para nuestro ejemplo crearemos un formulario de contacto en cual solicitará algunos datos a nuestros visitantes y luego esta información lo enviará por email a nuestra cuenta de correo.
El primer paso es crear un formulario en flash, para ello creamos una nueva película en blanco e insertamos cuatro campos de texto para el ingreso de datos llamados: txtnombre, txtempresa, txtemail y txtmensaje además de ello creamos un campo de texto dinámico para mostrar el resultado del proceso llamado txtestado.
Una vez que tenemos el formulario completo, el siguiente paso es envíar los datos que el usuario a ingresado a un php que se encargará de hacer el envío del correo, para ello necesitamos una función para comunicar a flash con PHP (que puede ser otro lenguaje de programación), esto lo hacemos con la clase LoadVars.
[as]
var lvsend:LoadVars = new LoadVars();
var lvrecv:LoadVars = new LoadVars();
lvsend.nombre = txtnombre.text;
lvsend.empresa = txtempresa.text;
lvsend.email = txtemail.text;
lvsend.mensaje = txtmensaje.text;
lvsend.sendAndLoad(«email.php», lvrecv, «POST»);
lvrecv.onLoad = function() {
if (lvrecv.rpta == «ok») {
txtestado.text = «Enviado con exito»;
} else {
txtestado.text = «Error en el envio»;
}
}
[/as]
Se crean dos variables del tipo LoadVars la primera llamada lvsend nos servirá para enviar datos y la segunda lvrecv nos permitirá recibir los datos del servidor. El primer paso es asignar que variables se enviarán para ello lo asignamos como una propiedad de lvsend y lo asignamos del campo de texto deseado, podemos la cantidad de variables que necesitemos enviar.
[as]lvsend.nombre = txtnombre.text;[/as]
El siguiente paso es utilizar la propiedad de LoadVars llamada sendAndLoad que nos permitirá enviar y recibir datos a la vez. Esta función necesita tres parámetros:
- El primer parámetro es la ruta a donde se enviarán los datos, en nuestro caso un archivo llamado mail.php
- El segundo parámetro en una variable del tipo LoadVars en donde se recibirán los datos que devuelva mail.php en nuestro caso la variable es llamada lvrecv
- El tercer y ultimo parámetro es el método de envío de datos POST o GET.
Finalmente para comprobar si efectivamente se enviaron los datos utilizamos la función onLoad el cual se ejecuta una vez que se hayan cargado los datos que nos envía mail.php. Verificamos que la variable rpta tiene el valor ok y segun ello mostramos un mensaje con el estado del envío.
Ahora esta guia no puede estar completa si es que no mostramos el código php para el envío del correo y la correspondiente respuesta a flash.
if ($_POST['email'] != "") { $dest = "unijimpe@gmail.com"; $head = "From: ".$_POST['email']."\r\n"; $head.= "To: unijimpe@gmail.com\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.= " Mensaje creado por blog.unijimpe.net \n"; // Finalmente enviamos el mensaje if (mail($dest, "Comentarios", $msg, $head)) { echo "rpta=ok"; } else { echo "rpta=error"; } }
Para una explicación detallada de este ultimo PHP pueden leer http://blog.unijimpe.net/enviar-e-mail-con-php/, Para concluir con este ejemplo les dejo los archivos fuente para que lo descarguen y puedan revisarlo.
Comentarios Total 140 comentarios
Publicado: 05/03/2009 3:36 pm
MI pregunta es si alguien sabe como modificar un template den action scrip 1.0 como este “FRESH FORM” con una secuencia de comandos de actioscript como ésta —
onClipEvent (construir)
(
buttonsOutLabel = “out”;
buttonsOverLabel = “over”;
formConfigurationPath = “21429-form04configuration.xml”;
formItemsPrefix = “tf_”;
formStructurePath = “21429-form04structure.xml”;
messageTextFieldPath = “cfMessage”;
resetButtonPath = “bReset”;
submitButtonPath = “bSubmit”;
xmlFilesPrefix = “”;
)
No hay ningún script asignado a los botones de ENVIAR y RESET.
Publicado: 20/03/2009 1:34 pm
pues solo una pregunta como es q mi pagina si envia y recibe correos de forma local pero cuando esta en internet ya no llegan los correos, que hago que funcion aparte de SMTP puedo utilizar o con esta misma se podra
Publicado: 09/04/2009 3:38 pm
He realizado un formulario usando tu codigo como referencia, pero cuando lo subo al servidor la pagina me dice que si envio el correo, pero cuando reviso mi email no tengo nada. Cambio de servidor, cambio de correo y cuando lo pruebo, funciona correctamente. Que pasa? que debo configurar?
Publicado: 16/04/2009 1:32 pm
hola, muy interesante el artículo, pero sin embargo no funka, lo que pasa es que el autor se ha copiado el codigo -y lo a modificado- de la siguiente pagina http://www.cristalab.com/tutoriales/enviar-correo-electronico-en-flash-usando-loadvars-c7l/. y se ha olvidado de cambiar los nombres de los algunos campos. En la página que les muestro si funciona sin ningun problema, revisenla
Publicado: 16/04/2009 10:41 pm
Copayo, de todos los comentarios que he recibido este es el mas absurdo, por que en ningún momento he leído el mencionado post y en segundo lugar por que mi método de envío es mas corto, además de ello no utilizo componentes si no textos dinámicos para el ingreso de los datos.
Antes de asegurar algo, te recomiendo averiguar antes, eso se hace por un mínimo de respeto.
Publicado: 01/05/2009 9:30 pm
Hola! les cuento que mi correo no abre , me aparece un anuncio diciendome que la cuenta esta cerrada por mal uso, pero la verdad no entiendo que paso y las instruciones que me dan para reabrirla de nuevo, no las entiendo, me podrian ayudar con esto ,para volver a mi cuenta que me hace mucha falta , lo necesito urgente mil gracias Beatriz
Publicado: 21/05/2009 3:01 pm
hola amigos, no consigo configurar un archivo form04configuration.xml
yo lo quiero enviar a mi email info@servidj.com
la pagina esta hospedada en 1and1.com
aqui les envio un enlace de donde esta el xml a ver si alguien me ayuda a configurarlo gracias http://www.servidj.com/prueba/form04configuration.xml si no vale con esto por favor mandenme un e-mail y les envio el archivo original
Publicado: 17/06/2009 5:20 am
A mi me funciona todo correctamente, el unico problema es que los correos me llegan a la bandeja de no deseado de una cuenta hotmail.
¿Como puedo solucionar esto?
Muchas Gracias
Publicado: 14/07/2009 2:43 pm
Hola «unijimpe», tengo un grave problema y quería saber si puedes ayudarme: estoy trabajando con un template en flash que ya viene programado, listo para modificarlo a tu gusto, entonces, ya configure el contacto en flash, es decir, ya los campos estan listos, pero esta template me trae 4 archivos:
1. la estructura
2. la configuración
3. el php
4. un archivo asp.
pero cuando monte la pagina he hice la prueba del contacto me dice que el mensaje no se puede enviar. Yo aqui te lo mando original a ver si tu puedes decirme cque debo colocar porque como yo lo puse ya veo que no. Gracias…
Esta es la estructura:
Name*:
Phone:
+-.0-9
E-mail*:
EmailValidator
Message*:
ESTE SE SUPONE QUE ES EL PHP
$value){
if ($key != ‘mail_to’ && $key != ‘smtp_server’ && $key != ‘smtp_port’ && $key != ‘mail_from’ && $key != ‘mail_subject’ && $key != ‘plain_text’){
$mail_body .= ‘‘.str_replace(‘_’,’ ‘,$key).’:’;
$mail_body .= ».stripslashes($value).»;
}
}
//—————————————————————–
$message = ».$mail_body.»; // mail body
//————if plain text is set to true removing html tags——
if ($_POST[‘plain_text’]==’true’) {
$message = str_replace(»,»\r\n», $message);
$message = strip_tags($message);
//——————————————————————
} else {
//—-otherwise composing message headers—————————
$headers = ‘MIME-Version: 1.0’ . «\r\n»;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . «\r\n»;
//——————————————————————
}
//————setting conf data————————————-
$to = $_POST[‘mail_to’];
$from = $_POST[‘mail_from’];
$subject = $_POST[‘mail_subject’];
$smtp_server = $_POST[‘smtp_server’];
$smtp_port = $_POST[‘smtp_port’];
//——————————————————————
//———setting header info————————————–
$headers .= ‘To: ‘.$to. «\r\n»;
$headers .= ‘From: Site visitor ‘ .$from. «\r\n»;
//——————————————————————
if (mail($to, $subject, $message, $headers)){ // sending mail
print(‘&mail=1’); //succes
} else {
print(‘&mail=0’);//failure
}
?>
Muchas gracias, te agradezco si me ayudas.
Publicado: 14/07/2009 2:45 pm
PERDONA, ESTA ES LA ESTRUCTURA, EN EL OTRO SALIO MALO.
Name*:
Phone:
+-.0-9
E-mail*:
EmailValidator
Message*:
Publicado: 05/08/2009 5:15 pm
No funka el ejemplo de envio de mail, tengo un error pero no se cual sea.
Publicado: 05/09/2009 9:58 am
Hola, no he probado el envio con este tutorial, pero al leerlo no se si sera algo mio pero tal vez no funcione:
if ($_POST[‘email’] = «») {
esa condicional te dice que en caso de que el email_txt (o como se llame en el archivo en flash el input en el que esta el email) este vacio, entonces haga todo dentro de ella, tal vez por eso no le funcione a muchos, la verdad no lo he probado, pero segun eso, pienso que no funcione si la persona escribe algo en ese input de email… saludos, si no tengo razon por favor respondan :D la idea es aprender de los que más saben :D.
Publicado: 05/09/2009 10:12 am
Jonathan, efectivamente tienes razón, por un tema de edición seguramente omití un simbolo pues la sentencia esta equivocada:
if ($_POST['email'] = "") {
Para comparar la igualdad se utiliza == y no solo uno como figura en el código, mientras que para comparar la desigualdad de utiliza !=. En realidad el código corregido debe ser:
if ($_POST['email'] != "") {
Normalmente los usuarios no notan este problema pues descargan los archivo fuente los cuales vienen corregidos y lo utilizan directamente po lo cual no notan estos detalles.
Gracias Jonathan pues con observaciones así se puede aprender mucho mas.
P.D: He corregido el código fuente del post, así que de ahora en adelante esto será mas claro para los usuarios.
Publicado: 17/09/2009 1:57 pm
Hola Unijimpe, gracias por el código, pero ví 2 errores ke kasi me sacan canas… en los archivos descargables aun sigue el error de:
if ($_POST[‘email’] != «») {
y 2do en el archivo de flash al cargar el .php el nombre está diferente…
lvsend.sendAndLoad(«mail.php», lvrecv, «POST»);
Gracias…!
Publicado: 28/09/2009 11:10 am
HOLA QUE TAL, YO TENGO UN GRAN PROBLEMA, EN EL SERVIDOR DONDE HE VOCOLGADO UN FORMULARIO, NO ME LLEGAN LOS CORREOS A LAS CUENTAS, AHORA ELLOS USAN PHP4, KIERO SABER QUE VERSION ES ESTA QUE ESTAN MOSTRANDO EN EL EJEMPO, Y EN TODO CASO, SI TENDRIA ALGO QUE VER LA VERSION PARA QUE FUNCIONE O NO, Y TAMBIEN KIERO SABER SI EL SMTP DEL SERVIDOR NECESITA UN AJUSTE, HAGANMELO SABER POR FAVOR, GRACIAS,UNA PREGUNTA, EN LOS CAMPOS DE INTRIDUCCION DE TEXTO, EL NOMBRER SE PONE EN LA INSTANCIA? O EN LA VAR???
GRACIAS
Publicado: 23/11/2009 9:23 am
Hola, esta interesante el ejemplo.
Pero como puedo hacer para que al momento de mandar el email los datos se guarden en una base de datos. Gracias
Publicado: 02/12/2009 5:41 pm
porfavor necesito ayuda estoy monanto la siguiente pagina http://www.hidroa.com/, el caso es q el formulario no me sirve, pues me llega lo siguiente:
—————————————————–
Below are the details filled by <FONT FACE=\"Arial\" SIZE=\"18\" COLOR=\"
Name: <FONT FACE=\"Arial\" SIZE=\"18\" COLOR=\"
Email:
Suggestion:
—————————————————-
Alguien que sepa del tema necesito una ayuda urgente y lo mas pronto posible.
Les agradesco mucho pos su tiempo y mas si me puede colaborar con la causa.
xD
Publicado: 08/12/2009 9:14 am
No funciona en Script 3 «on (release)» pertenece a script 2
Si alguien lo ha conseguido hacer funcionar de algun modo que lo postee en este blog para que los demas podamos hacerlo.
Gracias.
Publicado: 14/12/2009 5:58 pm
Hola amigo.
Lo he intentado hacer pero no me manda el correo.
He hecho las modificaciones que fallaban pero nada.
utilizo correo de 1and1. ¿Puede ser ese el problema?
Agradeceria la ayuda lo antes posible gracias.
Publicado: 22/12/2009 1:36 am
Hola Unijimpe.
Lo primero gracias por la ayuda prestada a todos y por hacerlo tan simple, especialmente a novatos como yo.
Parece que cada uno tiene descargados unos archivos diferentes.
Yo ya me he descargado los ultimos que tienen los errores corregidos de ‘email’ y «!=». Los he comprobado y no tienen errores de variables, todo parece perfecto, los he subido a mi espacio de pruebas tal y como estan y me devuelve el mensaje de enviado al hacerlo funcionar, pero no recibo ningun mensaje. Al «mail.php» le he cambiado los atributos para que sea de escritura tambien, pero sigue sin funcionar.
He buscado por foros y se comenta algo del «php.ini».
¿Puede ser esto la causa?, ¿tiene que haber algo mas presente?, ¿que ocurre para que algo que parece tan simple no funcione en nuestros servidores en cambio a ti si?, ¿que falla?.
Lo tengo en. http://webs.ono.com/ramonventura/
Otro novatillo mas que te hace haberte arrepentido de haber echo este blog. Gracias
Publicado: 21/01/2010 8:05 pm
hola he descargo tu archivo y no sales ayuda por favor
Publicado: 22/01/2010 2:02 pm
no encunetro donde descargrlo¡¡¡
Publicado: 05/03/2010 5:44 pm
tengo un flash que envia correos con php pero en un servidor me enviar correos y en otro que es el de cantv no me los envia alguien me puede decir como hago para poder enviarlo del otro servidor
Publicado: 15/03/2010 4:45 pm
Hola
Me podrian ayudar
Me da este error
Error al abrir la URL ‘file:///C|/Documents%20and%20Settings/mescobar/Mis%20documentos/Descargas/flashmail/email.php
corro el flash y eso me da
muchas gracias
Publicado: 15/03/2010 11:00 pm
Mario, para hacer el envío de email necesitas un servidor Web con soporte para PHP. Puedes subir los archivos a tu servidor y probarlo. Otra forma es editar el archivo FLA y colocar la ruta completa del script PHP para el envío de email:
Antes:
lvsend.sendAndLoad("email.php", lvrecv, "POST");
Despues
lvsend.sendAndLoad("http://tuserver.com/email.php", lvrecv, "POST");
Publicado: 20/04/2010 2:14 pm
Buenas tardes, estoy haciendo una página web en flash cs4 y actionscript 2.0. Para la sección de contacto estoy haciendo tu tutorial, pero al momento de enviar sale «error en el envío». Me fijé que antes habían hecho este mismo comentario. Todo, aparentemente, está bien. En el documento de flash y en el php, el servidor que uso ya tiene páginas alojadas y funciona correctamente php… no sé qué hacer. Obviamente le agregué otros campos, por requerimiento del diseño, pero lo hice guardando los pasos debidos y sintaxis… podrías ayudarme? no sé qué puede estar pasando. Gracias
Publicado: 22/04/2010 10:08 am
Por favor ayuda…. Siempre utilizo el siguiente codigo para enviar correo pero esta vez no funciona…No envia desde php y nunca entra a la funcion de recibir.
Este es el codigo en flash:
var envio_lv:LoadVars = new LoadVars();
var recibir_lv:LoadVars = new LoadVars();
mensaje_txt.text = "Complete el siguiente formulario";
function enviarMail() {
trace("uno");
if (txtmail.text.length && txtnombre.length && txtcoment.length) {
if (txtmail.text.indexOf("@") != -1 && txtmail.text.indexOf(".") != -1) {
trace("dos");
envio_lv.email = txtmail.text;
envio_lv.cuerpo = txtcoment.text;
envio_lv.nombre = txtnombre.text;
envio_lv.sendAndLoad("http://www.creactivos.com.ve/mail.php", recibir_lv, "POST");
mensaje_txt.text = "Enviando mensaje";
}
else {
txtmail.text = "Correo Invalido";
}
}
else {
txtmail.text = "Dato Necesario";
txtnombre.text = "Dato Necesario";
txtcoment.text = "Dato Necesario";
}
}
recibir_lv.onLoad = function(exito) {
trace("aaaaaaaaaaa");
if (exito) {
trace("tres");
mensaje_txt.text = this.estado;
txtmail.text = "";
txtnombre.text = "";
txtcoment.text = "";
}
else {
trace("cuatro");
mensaje_txt.text = "Error en la aplicación de correo";
}
};
Al ejecutarlo valida, muestra los dos primeros trace e imprime «Enviando mensaje» y alli se queda, lo pueden ver en: http://www.creactivos.com.ve/
Php:
<?php
if ($_POST['email'] != "") {
$sendTo = "webmaster@creactivos.com.ve";
$subject = "Comentario";
$headers = "From: " . "Creactivos";
$headers .= "\r\n";
$headers .= "Reply-To: " . $_POST["email"];
$message = "Nombre: ". $_POST["nombre"].">\r\n";
$message .= $_POST["cuerpo"];
mail($sendTo, $subject, $message, $headers);
echo "estado=Mensaje enviado";
}
?>
Por favor ayuda!!!!!!!!!!
Publicado: 23/04/2010 12:15 am
Andreina según parece no se esta llamando al PHP que se encarga de enviar los datos. Verifica que el botón esta llamando a la función ‘enviarMail’ de tu flash que se encarga de enviar los datos al PHP.
Publicado: 28/04/2010 12:03 pm
hola que tal muy buen articulo solo tengo 1 problema me estan llegando los correos con los tags html como puedo eliminarlos, ya verifique q este habilitado mi cuenta de correo para formato html
E-Mail: essanchez@pruebamail.comTelefono: 1234567Mensaje: prueba de correo 3
Publicado: 31/07/2010 5:45 pm
Eh echo formulario con html y php los eh subido y funcionan a la perfecion pero cuando intente con flash dice que esta mal direccionado hacia el archivo mail.php
ayudame porfavor
Publicado: 04/08/2010 7:24 pm
gracias
Publicado: 10/08/2010 5:14 am
Hoy en día, la gran pesadilla de los aprendices de php son los formularios, en ello se basa el inicio del PHP
Publicado: 14/12/2010 1:14 pm
Lei todo el foro y baje los archivos hice las correcciones
en php
if ($_POST[‘email’] != «»){
en as
lvsend.sendAndLoad(«email.php», lvrecv, «POST»);
Mi archivo se llama «email.php»
PERO SIGUE SIN FUNCIONAR. Supongo que el problema radica en
«LA VERSIÓN DE PHP INSTALADA»
pues tengo un servidor local con php 5 y un servidor de telmex también con php5 y en ninguno corre.
Intentare el ejercicio que tiene
unijimpe
en as3
GRACIAS A TODOS POR SUS ESFUERZOS
Publicado: 27/12/2010 11:29 pm
Hola a todos
A mi ya me funciono el codigo. En Flash tengo el siguiente formulario
Nombre:
Empresa:
E-mail:
Mensaje:
Y en el boton enviar el siguiente codigo
on (release){
var lvsend:LoadVars = new LoadVars();
var lvrecv:LoadVars = new LoadVars();
lvsend.nombre = txtnombre.text;
lvsend.empresa = txtempresa.text;
lvsend.email = txtemail.text;
lvsend.mensaje = txtmensaje.text;
lvsend.sendAndLoad(“email.php”, lvrecv, “POST”);
lvrecv.onLoad = function() {
if (lvrecv.rpta == “ok”) {
txtestado.text = “Enviado con exito”;
} else {
txtestado.text = “Error en el envio”;
}
}
}
En el Archivo email.php tengo el siguiente codigo
if ($_POST[‘email’] != «») {
$headers = «MIME-Version: 1.0» . «\r\n»;
$headers .= «Content-type: text/html; charset=iso-8859-1» . «\r\n»;
$headers .= «To: info@mujeresenaccion2011.com«.»\r\n»;
$headers .= «From: «.$_POST[‘email’].»\r\n»;
$email = «info@mujeresenaccion2011.com»;
$subject = «Comentarios»;
// Ahora creamos el cuerpo del mensaje
$mensaje = «——————————- \n»;
$mensaje .= » Comentarios \n»;
$mensaje .= «——————————- \n»;
$mensaje .= «NOMBRE: «.$_POST[‘nombre’].»\n»;
$mensaje .= «EMPRESA: «.$_POST[‘empresa’].»\n»;
$mensaje .= «EMAIL: «.$_POST[‘email’].»\n»;
$mensaje .= «HORA: «.date(«h:i:s a»).»\n»;
$mensaje .= «FECHA: «.date(«D, d M Y»).»\n»;
$mensaje .= «——————————- \n\n»;
$mensaje .= $_POST[‘mensaje’].»\n\n»;
$mensaje .= «——————————- \n»;
$mensaje .= » Mensaje \n»;
// Finalmente enviamos el mensaje
if (mail($email, $subject, $mensaje, $headers)) {
echo «rpta=ok»;
} else {
echo «rpta=error»;
}
}
Ya lo probe y funciona correctamente. Sólo agreguen el remitente como seguro, sino sera enviado a la carpeta de correo no seguro.
Saludos
Thai
Publicado: 05/02/2011 1:16 pm
if ($_POST[‘email’] != “” )
ASI DEBERIA QUEDAR LA PRIMER LINEA.
Publicado: 03/04/2011 10:27 pm
compañeros todo esta muy bien, los correos si se manda, el problema es que BAJAN LOS ARCHIVOS y no verifican los errores que tiene por ejemplo:
1.- incorrecto: lvsend.sendAndLoad(«email.php», lvrecv, «POST»);
correcto: lvsend.sendAndLoad(«mail.php», lvrecv, «POST»);
2.- incorrecto: if ($_POST[‘email’] = «») {
correcto: if ($_POST[‘email’] != «») {
Publicado: 23/06/2011 11:47 pm
Me da «error en el envío» como a varios y no logro hallarle solución…
Inclusive copié y pegué lo que dice Thai y me sigue dando el mismo error…
Publicado: 19/10/2011 9:48 am
Lo que dice Thai anda 10 puntos.
Si da error, debe ser que esta mal ruteado al php, incluso agregue mas variable y funciona ok.
Gracias!
Publicado: 06/12/2011 4:26 pm
a mi me sigue saliendo error al momento de clicar enviar
he revisado la ruta y nada
sigue el error a lo mejor y deba copnfigurar algo en mi servidor
Publicado: 13/02/2012 2:43 pm
Hola! Muchas Gracias!! He leído todos los comentarios y correcciones que se han echo y el formulario me ha funcionado de 10! El primero que logro que funcione. Muchas Gracias por tu aporte!