El codigo que utilizo en el flash, y que siempre ha funcionado:
Código ActionScript :
stop(); _root.carga_fondo.enviar_mc.onRelease=function(){ enviarCorreo(); }; _root.carga_fondo.textoOk._visible=false; _root.carga_fondo.textoError._visible=false; _root.carga_fondo.mensaje_requeridos._visible=true; limpiarFormulario(); //enviar_mc.onRelease=enviarCorreo; function comprobarCampoCorreo(campo,defecto,okAntes){ if (campo.corregir) return false; if ( (campo.text == "") || (campo.length<4) ){ campo.text = defecto; campo.corregir=true; return false; } var posArroba:Number = campo.text.indexOf("@"); var posPunto:Number = campo.text.indexOf("."); var extraido:String = campo.text.substring(posArroba+1, posPunto); if ( (posArroba == -1) || (posPunto == -1) || (posPunto<posArroba) || (extraido.length<2) ) { campo.text = defecto; campo.corregir=true; return false; } return (true == okAntes); } function comprobarCampoTexto(campo,defecto,okAntes){ if (campo.corregir) return false; if ((campo.text=="") || (campo.corregir==true) ){ campo.text=defecto; campo.corregir=true; return false; } return (true == okAntes); } function enviarCorreo(){ todoOk=true; todoOk=comprobarCampoTexto(nombre,"requerido / required",todoOk); todoOk=comprobarCampoCorreo(email,"requerido / required",todoOk); todoOk=comprobarCampoTexto(telefono,"requerido / required",todoOk); // todoOk=comprobarCampoTexto(telefono2Txt,"Su nombre, por favor",todoOk); todoOk=comprobarCampoTexto(mensaje,"requerido / required",todoOk); if (todoOk) enviarCorreoSeguro(); } function enviarCorreoSeguro(){ var formCorreo = new LoadVars(); //formCorreo.tarjeta = tarjeta.getSelectedItem().data; formCorreo.nombre=nombre.text; formCorreo.email=email.text; formCorreo.telefono=telefono.text; formCorreo.mensaje=mensaje.text; formCorreo.onLoad = function(success:Boolean) { trace("Mensaje Enviado suc:"+success+" this: "+this+""); if (success && (this.estatus=="ok") ) { _root.carga_fondo.textoOk._visible=true; _root.carga_fondo.textoError._visible=false; _root.carga_fondo.mensaje_requeridos._visible=false; limpiarFormulario(); } else { _root.carga_fondo.textoOk._visible=false; _root.carga_fondo.textoError._visible=true; _root.carga_fondo.mensaje_requeridos._visible=false; } }; trace("_-----------------------------"); formCorreo.sendAndLoad("http://www.dominio.net/send_contacto.php", formCorreo, "POST"); } function cambioCampo(){ this.corregir=false; textoOk._visible=false; textoError._visible=false; mensaje_requeridos._visible=true; //trace("Cambiando campo "+this.corregir); } function fijarCampo(campo){ campo.text=""; campo.corregir=false; campo.onChanged=cambioCampo } function limpiarFormulario(){ fijarCampo(nombre); fijarCampo(telefono); fijarCampo(email); fijarCampo(mensaje); }
Aqui el codigo del php modificado segun la orientacion de los tecnicos del hosting (hay muchos comentarios, perdon)
Código PHP :
<? include("Mail.php"); //if (isset($_REQUEST["nombre"])&& isset($_REQUEST["email"])&& isset($_REQUEST["mensaje"])&& isset($_REQUEST["telefono"]) ) if ( isset($_POST['enviar'])&&($_POST['nombre']!='')&&($_POST['email']!='')&&($_POST['mensaje']!='')&&($_POST['telefono']!='')){ //dirección del destinatario la cogemos del formulario $recipients = "[email protected]"; //Cuenta desde donde se hace el envío $headers["From"] = $_POST['email']; //destinatario lo cogemos desde el formulario $headers["To"] = "[email protected]"; //asunto lo sacamos del formulario $headers["Subject"] = "Desde SERVIDOR"; //cuerpo del mensaje, lo cojemos del formulario $body = $_POST['nombre']; $body = $_POST['email']; $body = $_POST['telefono']; $body = $_POST['mensaje']; //servidor correo (Ver NOTA) $params["host"] = "10.0.0.161"; //puerto smtp $params["port"] = "25"; //activamos la autenticacion, siempre a true $params["auth"] = true; //usuario del correo desde el que enviamos $params["username"] = "[email protected]"; //clave de la cuenta de correo anterior $params["password"] = "123456"; // Creamos el objeto mail usando el metodo Mail::factory $mail_object =& Mail::factory("smtp", $params); // Enviamos el correo con los datos anteriores y comprobamos que se ha enviado correctamente if( $mail_object->send($recipients, $headers, $body) ){ //echo "Mensaje enviado correctamente."; echo "&estatus=ok&"; }else{ //echo "Error al enviar."; echo "&estatus=Error&"; } }else{ echo "Para realizar el envio dirijase a: <a href='http://sudominio.com/formulario.html'>http://sudomin io.com/formulario.html</a><br /> Y complete todos los campos."; } ?>
Y aqui un formulario que han hecho los del servidor, y que llama a mi php, para demostrarme que funciona, y que el problema esta en el fla. (Este formulario sí funciona)
Código PHP :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>Formulario</title> </head> <body> <form action="send_contacto.php" method="post" accept-charset="utf-8"> <p>nombre:<br /><input type="text" name="nombre" value=""/></p> <p>email:<br /><input type="text" name="email" value=""/></p> <p>telefono:<br /><input type="text" name="telefono" value=""/></p> <p>Mensaje:<br /><textarea name="mensaje" rows="8" cols="40"></textarea></p> <p><input type="submit" value="Enviar" name="enviar"/></p> </form> </body> </html>
Que le falta o sobra a mi flash?
Gracias de nuevo