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
