Foros del Web » Programando para Internet » PHP »

controlar envios correctos phpmailer

Estas en el tema de controlar envios correctos phpmailer en el foro de PHP en Foros del Web. Buenos días a todos! Tengo creado un gestor de boletines que funciona perfectamente desde el cual enviamos unos 3000 emails. Me gustaría controlar el momento ...
  #1 (permalink)  
Antiguo 04/05/2009, 03:24
 
Fecha de Ingreso: octubre-2007
Mensajes: 130
Antigüedad: 16 años, 6 meses
Puntos: 2
controlar envios correctos phpmailer

Buenos días a todos!
Tengo creado un gestor de boletines que funciona perfectamente desde el cual enviamos unos 3000 emails. Me gustaría controlar el momento en que da fallo algún envio ya que aunque tengo la programación puesta, no funciona. Os pongo el código para ver si sabeis donde puede estar fallando, aunque envie a una direeción falsa como (djdjdjdj) $exito vale 1 siempre. También comentaros que cuando realizo un envio grande, de esos 3000 correos, no vuelve a su pagina una vez realizado el proceso, he incluido la función sleep y además he aumentado el time del script porque leí que estoy podía influir.... Graciass!!!!!!
Código PHP:
$exito $mail->Send();
            
$intentos=1
            while ((!
$exito) && ($intentos 5)) {
            
sleep(5);
            
//echo $mail->ErrorInfo;
            
$exito $mail->Send();
            
$intentos=$intentos+1;    
            echo 
"<br/>".$mail->ErrorInfo;
            }
            
            echo 
"Vamos a imprimir el valor de envio= ".$exito;
            if(!
$exito)
            {
            echo 
"Problemas enviando correo electrónico a ".$destinatario;
            echo 
"<br/>".$mail->ErrorInfo;    
            }
            else
            {
            echo 
"Mensaje enviado correctamente";
                       
header("Location: index.php?proceso=email_enviado");
            } 
  #2 (permalink)  
Antiguo 04/05/2009, 21:48
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: controlar envios correctos phpmailer

A ver vamos por parte... para que redirija se supone que $exito debe ser distinto de falso. Si siempre es 1 deberia por consecuencia redirijir... por lo tanto podemos deducir que no siempre es 1.

Por otro lado sleep("segs") hace que la ejecucion del programa tarde los segundos dados, por lo tanto solo se va a demorar un poco mas en ejecutar el script mas que darte tiempo.

Aumentar el tiempo del script puede funcionar en tu caso, ya que tienes que enviar 3000 correos asi que podria demorarse un tiempo.

Y para que valide un mail debes poner una funcion que lo haga... podrias probar con algo como esto:
Código php:
Ver original
  1. $exito      = $mail->Send();
  2. $intentos   = 1;
  3. $fecha      = date("j F, Y, g:i a");
  4. $mf         = fopen("mails.txt","a") or die("Problemas en la creacion");
  5. fputs($mf, "Fecha: $fecha\n");
  6. if(checkMail($destinatario)){
  7.     while((!$exito) && ($intentos < 5)){
  8.         sleep(5); //tarda 5 segs en continuar
  9.         $exito = $mail->Send();
  10.         $intentos++;
  11.         fputs($mf, "Error: ".$mail->ErrorInfo."\n");
  12.     }
  13.     fputs($mf, "Valor de envio = ".$exito."\n");
  14.     if(!$exito){
  15.         fputs($mf, "Problemas enviando correo a ".$destinatario."\n");
  16.         fputs($mf, "Error: ".$mail->ErrorInfo."\n");
  17.         fputs($mf,"ACA NO SE ENVIA EL HEADER...\n");
  18.         fputs($mf,"---------------------------------------");
  19.         fputs($mf,"\n");
  20.         fclose($mf);
  21.     }else{
  22.         fputs($mf, "Correcto envio a ".$destinatario."\n");
  23.         fputs($mf,"---------------------------------------");
  24.         fputs($mf,"\n");
  25.         fclose($mf);
  26.         header("Location: index.php?proceso=email_enviado");
  27.     }
  28. }else{
  29.     fputs($mf, "Correo invalido: (".$destinatario.") \n");
  30.     fputs($mf,"---------------------------------------");
  31.     fputs($mf,"\n");
  32.     fclose($mf);
  33. }
  34. function checkMail($mail){
  35.     if (!ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$mail)){
  36.         return false;
  37.     }else{
  38.         return true;
  39.     }
  40. }

Codigo no testeado.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
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 21:39.