Foros del Web » Programando para Internet » PHP »

enviar email con xajax

Estas en el tema de enviar email con xajax en el foro de PHP en Foros del Web. hola , estuve implementando en un formulario de contactos la libreria xajax, pero no he logrado enviar el correo, lo quise probar con la clase ...
  #1 (permalink)  
Antiguo 12/06/2009, 17:20
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
enviar email con xajax

hola , estuve implementando en un formulario de contactos la libreria xajax, pero no he logrado enviar el correo, lo quise probar con la clase phpmailer pero no se si sera valido poner la clase dentro de la funcion xajax... bueno aqui le dejo mi funcion , espeor me puedan ayudar:

Código PHP:
<?php
//***********************CONTACTENOS**************************// 
function validar_email($email) {    
    return 
preg_match('/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/'$email);
}

function 
procesar_contacto($form_entrada){
   
//creo el xajaxResponse para generar una salida
   
$respuesta = new xajaxResponse();
   
$respuesta->setCharacterEncoding('ISO-8859-1');
   
   
//validación
   
$error_form "";
   if (
$form_entrada["nombre"] == ""){
      
$error_form "* Debe escribir su nombre";
      
$marca "focus1";}
   elseif (
$form_entrada["postal"] == ""){
      
$error_form "* Debe escribir su nº postal";
      
$marca "focus2";}
   elseif (
$form_entrada["telefono"] == ""){
        
$error_form "* Debe escribir su teléfono";
      
$marca "focus3";}
   elseif (
$form_entrada["email"] == ""){
      
$error_form "* Debe escribir su e-mail";
      
$marca "focus4";}
    elseif (!
validar_email($form_entrada["email"])){
      
$error_form "* El e-mail es invalido";
      
$marca "focus4";}
   elseif (
$form_entrada["requerimiento"] == ""){
      
$error_form "* Debe escribir sus requerimientos";
      
$marca "focus5";}
      
   
//compruebo resultado de la validación
   
if ($error_form != ""){
      
//Hubo un error en el formulario
      //en la capa donde se muestran mensajes, muestro el error
      
$respuesta->Assign("alert","innerHTML","<span style='color:red;'>$error_form</span>");
      
$respuesta->Assign("focus1","innerHTML","");
      
$respuesta->Assign("focus2","innerHTML","");
      
$respuesta->Assign("focus3","innerHTML","");
      
$respuesta->Assign("focus4","innerHTML","");
      
$respuesta->Assign("focus5","innerHTML","");
      
$respuesta->Assign($marca,"innerHTML","<span style='color:red; font-size:10px;'>*</span>");
   }else{
     
// $salida = '<img src="images/sending.gif" width="16" height="16" />';
      //$respuesta->Assign("success","innerHTML",$salida);
      //formateamos datos
      
$mensaje $form_entrada["requerimiento"];
      
$mensajeN str_replace("\n","<br>",$mensaje);
      
$fecha_envio date('d/m/Y'time());
      
$fecha_envio htmlentities($fecha_envio);
      
$cuerpo_html 'mi mensaje';

      
$header 'From: ' $form_entrada["email"] . " \r\n";
      
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
      
$header .= "Mime-Version: 1.0 \r\n";
      
$header .= "Content-Type: text/html";
      
$para '[email protected]';
      
$asunto 'Contacto Web f1lab.com';
      
      if(!
mail($para$asunto$cuerpo_html$header)){
            
$salida "No se pudo enviar su mensaje<br>en estos momentos";
            
$respuesta->Assign("success","innerHTML",$salida);
      }else{
            
$salida 'Su mensaje ha sido enviado<br>con éxito';
              
$respuesta->Assign("success","innerHTML",$salida);
      }  
      
//tenemos que devolver la instanciación del objeto xajaxResponse
   
}
   return 
$respuesta;
}

?>
Hasta ahora he logrado que funcione la validacion de el formulario, pero como repito he tenido problemas al querer enviar el correo, pues no me sale ningun tipo de error... osea cuando presiono el boton de enviar no se ejecuta nada despues del else...
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 13/06/2009, 10:06
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: enviar email con xajax

alguna idea?
__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 13/06/2009, 11:07
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: enviar email con xajax

No te sale nada (del mensaje de error) porque la peticion la hace el xajax, prueba a ejecutar solo y directamente el script para q puedas ver y cazar los mensajes de error...

Código PHP:
<?php 
//***********************CONTACTENOS**************************//  
function validar_email($email) {     
    return 
preg_match('/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/'$email); 


function 
procesar_contacto($form_entrada){ 
   
//creo el xajaxResponse para generar una salida 
   
$respuesta = new xajaxResponse(); 
   
$respuesta->setCharacterEncoding('ISO-8859-1'); 
    
   
//validación 
   
$error_form ""
   if (
$form_entrada["nombre"] == ""){ 
      
$error_form "* Debe escribir su nombre"
      
$marca "focus1";} 
   elseif (
$form_entrada["postal"] == ""){ 
      
$error_form "* Debe escribir su nº postal"
      
$marca "focus2";} 
   elseif (
$form_entrada["telefono"] == ""){ 
        
$error_form "* Debe escribir su teléfono"
      
$marca "focus3";} 
   elseif (
$form_entrada["email"] == ""){ 
      
$error_form "* Debe escribir su e-mail"
      
$marca "focus4";} 
    elseif (!
validar_email($form_entrada["email"])){ 
      
$error_form "* El e-mail es invalido"
      
$marca "focus4";} 
   elseif (
$form_entrada["requerimiento"] == ""){ 
      
$error_form "* Debe escribir sus requerimientos"
      
$marca "focus5";} 
       
   
//compruebo resultado de la validación 
   
if ($error_form != ""){ 
      
//Hubo un error en el formulario 
      //en la capa donde se muestran mensajes, muestro el error 
      
$respuesta->Assign("alert","innerHTML","<span style='color:red;'>$error_form</span>"); 
      
$respuesta->Assign("focus1","innerHTML",""); 
      
$respuesta->Assign("focus2","innerHTML",""); 
      
$respuesta->Assign("focus3","innerHTML",""); 
      
$respuesta->Assign("focus4","innerHTML",""); 
      
$respuesta->Assign("focus5","innerHTML",""); 
      
$respuesta->Assign($marca,"innerHTML","<span style='color:red; font-size:10px;'>*</span>"); 
   }else{ 
     
// $salida = '<img src="images/sending.gif" width="16" height="16" />'; 
      //$respuesta->Assign("success","innerHTML",$salida); 
      //formateamos datos 
      
$mensaje $form_entrada["requerimiento"]; 
      
$mensajeN str_replace("\n","<br>",$mensaje); 
      
$fecha_envio date('d/m/Y'time()); 
      
$fecha_envio htmlentities($fecha_envio); 
      
$cuerpo_html 'mi mensaje'

      
$header 'From: ' $form_entrada["email"] . " \r\n"
      
$header .= "X-Mailer: PHP/" phpversion() . " \r\n"
      
$header .= "Mime-Version: 1.0 \r\n"
      
$header .= "Content-Type: text/html"
      
$para '[email protected]'
      
$asunto 'Contacto Web f1lab.com'
       
      if(!
mail($para$asunto$cuerpo_html$header)){ 
            
$salida "No se pudo enviar su mensaje<br>en estos momentos"
            
$respuesta->Assign("success","innerHTML",$salida); 
      }else{ 
            
$salida 'Su mensaje ha sido enviado<br>con éxito'
              
$respuesta->Assign("success","innerHTML",$salida); 
      }   
      
//tenemos que devolver la instanciación del objeto xajaxResponse 
   

   return 
$respuesta


$arreglotest = array('requerimiento'=>'xxx''email'=>'tumail@...', ... );
echo 
procesar_contacto($arreglotest);
?>
Ejecutas el archivo del script directamente y despues q soluciones le quitas o comentas lo q agregaste al final para probarlo en xajax

espero sirva
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #4 (permalink)  
Antiguo 15/06/2009, 09:11
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: enviar email con xajax

Hola, disculpa que no te haya podido responder, sino que estuve de fin de semana xd....

No entendi mucho en poner ese array despues d ela funcion... pero hice lo que me escribiste: probe la funcion sola (junto con ese array) y me sale este error:

Fatal error: Class 'xajaxResponse' not found in D:\xxx\funcion1.php on line 8

significa algo?... el llamado de la funcion no puede estar mal, ya que primero probe la validacion del formulario y no hubo problemas. Deberia poner algo en ese array? como el $form_entrada["postal"]???
__________________
Quitenme la vida pero no la bebida.
  #5 (permalink)  
Antiguo 15/06/2009, 15:23
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: enviar email con xajax

No tiene nada que ver con el mensaje de error q indicas, pero donde puse puntos suspensivos (lease ...) debias rellenar tus datos para "simular" la llamada al script.

ese error es debido a que no encuentra la clase, como no conosco xajax aca hay 2 posibilidades:
a) no va a funcionar lo que te dije porque esa clase requiere que tu script solo pueda ser llamado desde xajax

b) tenias q haber puesto un include(); para incluir la clase y puede que sea la raiz de tus problemas.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:58.