post #1 (permalink) Antiguo 05-oct-2008, 23:03
Predeterminado Modificar codigo para lista de correo simple
Hola amigos del foro, estoy usando el siguiente codigo para enviar mensajes de correo a manera de una lista de correo muy sencilla.
Código:
<?php 
//Conexion a la base de datos 
include("config.php"); 

require("class.phpmailer.php"); 
$mail = new PHPMailer(); 
$mail->Host = "smtp.1and1.com"; 
$mail->From = "lista@midominio.com"; 
$mail->FromName = "List Manager"; 
$mail->Subject = "Nuevo Servicio"; 

$result = mysql_query("SELECT nombres, email FROM clientes"); 
while ($row = mysql_fetch_array($result)) { 
  // HTML body 
  $body = "Hola <strong>".$row["nombres"]."</strong>, "; 
  $body.= "<p>Les comunicamos el nuevo servicio... <p>"; 
  $body.= "<em>List manager</em>"; 
  // Text body 
  $text = "Hola ".$row["nombres"].", \n\n"; 
  $text.= "Les comunicamos el nuevo servicio...\n\n"; 
  $text.= "List manager"; 
  // Configurar Email 
  $mail->Body = $body; 
  $mail->AltBody = $text; 
  $mail->AddAddress($row["email"], $row["nombres"]); 
  // Enviar el email 
  if(!$mail->Send()) { 
    echo "Error al enviar a: " . $row["email"] . "<br>"; 
   } 
  $mail->ClearAddresses();  
} 
?>
El codigo funciona correctamente sobretodo por que la base de datos de clientes no contiene aun muchos registros, pero se añaden varios diariamente.
Mi consulta es sobre ese punto, como deberia modificar el codigo para realizar el envio por grupos cuando la base de datos sea mas extensa, para no superar el tiempo maximo de ejecucion de scripts en mi servidor, es que no se me ocurre como hacerlo.
Cualquier sugerencia sera bienvenida.
Usuario Novato
Fecha de Ingreso: ene-03
Mensajes: 45
Gracias dadas: 0
Agradecido 0 veces en 0 Mensajes
jorgep246 está desconectado
Responder Citando
post #2 (permalink) Antiguo 06-oct-2008, 08:42
Predeterminado Re: Modificar codigo para lista de correo simple
Lo primero que tienes que hacer es dividir la tabla total en cantidad de paginas, como si se tratase de un paginador normal.

es decir, si tienes 40 registros y quieres que se envien en tandas de a 10, tendras 4 paginas

Luego tener otra tabla que guarde un pageBegin o sea, el ID de la ultima pagina enviada (pageBegin = 2), y partir de alli tu proximo envio, luego tienes que crear tareas programadas (cronjobs) cada x tiempo... por ejemplo, cada 1 hora. Entonces cada 1 hora se ejecuta el archivo y envia los correos haciendo un LIMIT en tu consulta...

ej:

$pageBegin = 3;
$pageFinish = 10;
$mysql = mysql_query("SELECT * FROM `table` WHERE `status` = 1 LIMIT $pageBegin,$pageFinish");

Se entiende???

Luego haces un update para actualizar pageBegin en la otra tabla...

Tambien deberias realizar una comprobación de correos, para que cuando el resultado del selec sea negativo hacer un exit...
Usuario Avanzado
Fecha de Ingreso: may-03
Mensajes: 2,099
Gracias dadas: 0
Agradecido 0 veces en 0 Mensajes
FuLaNo_ está desconectado
Responder Citando
Respuesta

Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Ir al Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda para modificar un menu css con imagenes sheila2009 Webmasters 4 08-sep-2009 19:40
Modificar una .Mdb por codigo rvsebas Programación 2 19-dic-2007 10:34
Lista de precios para reventa Juangt Compra - Venta 2 18-ago-2006 00:00
Lista la Encarta 2006 para la Argentina LinuxXP Microsoft Windows 7 29-oct-2005 00:00
para aprender a modificar registros de win xp ed_riesgo Microsoft Windows 2 08-ago-2004 00:00


La franja horaria es GMT -3. Ahora son las 05:27.