Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/06/2006, 10:23
la_vida_esun_if_else
 
Fecha de Ingreso: mayo-2006
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Buenisimo Cluster!

Cluster genial, muchas gracias por las explicaciones me dejaron mas claro el tema.

Optimicé un montón el script, si lo revizás te vas a dar cuenta, solo me quedan dos dudas:
1: Estoy tratando de dispararlo con una tarea CRON pero por alguna razon no me lo dispara!!, la tarea que uso (test) es:
0,15,30,45 * * * * http://www.midominio.com/admin/sendNL.php
Se te ocurre por que puede ser? Esta tarea la armo desde un admin que me proveen los de mi servidor..
2: Hay peligro real de que se trabe todo y termine no enviando nada con este script? como lo ves vos con tu ojo profesional? Digamos hay posibilidad de esta manera de enviar por ejemplo 200, 300 mails?

Bueno gracias de nuevo y adjunto el codigo nuevo:

Código PHP:
<?
   
###################################################################################################################################
   ##                                   RUTINA PARA ENVÍO DE BOLETINES INFORMATIVOS                                                 ##
   ###################################################################################################################################
   
   /* Script usado para el envío de los mails
   ------------------------------------------
   PHPMailer descargado de PHPClasses.org
   
   TABLAS
   ------
   nl_new_available : valor 0 o 1. "0" indica que no hay un nuevo boletin para enviar, "1" indica lo contrario.
   
   nl_users: tabla con informacion de cada contacto, incluyendo el email.
   
   Funcionamiento:
   ---------------
   1- Seteo un cron en mi server para que todos los 1 y 15 de cada mes me ejecute sendNL.php (que contiene el codigo de más abajo).
   
   2- El cuerpo del mensaje es generado embebiendo un archivo.
   
   3- Cuando se envía el boletin a todas las direcciones de email se graba en "nl_new_available" el valor 0,
      y los resutados del proceso son enviados al administrador vía email.   
   */
   ###################################################################################################################################
   
   // CONFIGURACION GENERAL //////////////////////////////////////////////////////////////////////////////////////////////////////////
   // Includes
   
include("class.phpmailer.php");
   include(
"conex.php");
   
$link Conectarse();
   
   
// VARIABLES
   // Dominio
   
$dominio $_SERVER['HTTP_HOST'];
   
// Email del administrador
   
$administrador "info@" $_SERVER['HTTP_HOST'];
   
// Nombre y ubicacion del archivo LOG (debe comenzar con "../")
   
$file "../Backup/logs/result_log_" date("Y-m-d") . ".txt";
   
// Gestor de archivo LOG
   
$gestor fopen($file,"a+");
   
// Nombre y ubicacion del TEMPLATE
   
$template "http://$dominio/NL.php"
   
// Subject del boletin
   
$subject "Boletin Quincenal - $dominio"
   
   
// Configuracion PHPMailer 
   
$mail = new PHPMailer();
   
$mail->Mailer   "smtp";
   
$mail->IsHTML(true);
   
$mail->From "boletin@$dominio";
   
$mail->FromName $dominio;
   
   
   
// Enviar NL /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   
   // 1. Revizo si hay un nuevo NL disponible
   
$query1 "SELECT new FROM nl_new_available";
   
$result1 mysql_query$query1 $link ) or die( mysql_error() );
   
$row1 mysql_fetch_array($result1);
   if(
$row1['new'] == 1){
                
                     
// Selecciono todos los registros
                     
$query2 "SELECT email FROM nl_users ORDER BY ID";
                     
$result2 mysql_query($query2,$link) or die(mysql_error());
                     
$total mysql_num_rows($result2);
                     
                     
// Envio el mail
                     
$i 1;
                     while(
$row2 mysql_fetch_array($result2)){

                     
$mail->AddAddress($row3[email]);
                     
$mail->Subject $subject;
                     
$mail->Body    file_get_contents($template);
                     
                     
//Escribo error en log
                     
if(!$mail->Send())fwrite($gestor"$i / ERROR al enviar mail a $row2[email] - " date("r") . " - ErrorInfo: " $mail->ErrorInfo " \r\n");
                     
//Escribo confirmacion en log
                     
else fwrite($gestor"$i / Correcto: mail a $row2[email] - " date("r") . "\r\n");
                     
                     
//echo"Enviado: $row2[email] <strong>$i</strong> de $total<br>";//TEST: Muestro enviados en pantalla
                     
                     // Duermo el script para no saturar al servidor
                     
sleep(2);
                     
                     
$mail->ClearAddresses();
                     
$i++;                     
                     };
                     
                               
// Al terminar la rutina de envío grabo en la base que no hay nuevos boletines                     
                                
$query3 "UPDATE nl_new_available SET `new` = '0'";

                               
$result3 mysql_query($query3,$link) or die(mysql_error());
                               
                               
// Envio mail informando al administrador
                               
$mail->AddAddress($administrador);
                               
$mail->Subject "$dominio - Resultados de envío de boletin " date("r");
                               
$mail->Body    "<font color='#000000' face='Arial, Helvetica, sans-serif'>Resultados del envío de boletín</font>";
                               
$mail->AddAttachment($file);
                               if(!
$mail->Send())fwrite($gestor"ERROR al enviar mail a Administración - " date("r") . " - ErrorInfo: " $mail->ErrorInfo " \r\n");

                     
                               
fclose($gestor);
                               
mysql_close($link);

   
   };
   
// Fin /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
?>