Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/10/2008, 19:58
Avatar de yrduk
yrduk
 
Fecha de Ingreso: enero-2007
Ubicación: Caracas, Venezuela
Mensajes: 277
Antigüedad: 17 años, 3 meses
Puntos: 3
Respuesta: Modificar codigo para lista de correo simple

Cita:
Iniciado por evil1176 Ver Mensaje
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:
<?php
//Conexion a la base de datos
include("config.php");

require(
"class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host "smtp.1and1.com";
$mail->From "[email protected]";
$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.

Se me ocurre que podrías usar límites en al consulta, como si fuera una paginación.

Algo así:

Código PHP:
<?php
//Conexion a la base de datos
include("config.php");

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

$registros 10;
$_GET[pagina] = $_GET[pagina];

if (!
$_GET[pagina]) {
   
$inicio 0;
   
$pagina 1;
}
else {
   
$inicio = ($_GET[pagina] - 1) * $registros;
}

$result_ mysql_query("SELECT nombres, email FROM clientes"); 
$total_registros mysql_num_rows($result_);
$total_paginas ceil($total_registros $registros);


$result mysql_query("SELECT nombres, email FROM clientes LIMIT $inicio, $registros"); 
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();  
}
?>
<?php
if($total_paginas >= $_GET[pagina]) {
?>
<script type="text/javascript">location.href('');</script>
<?php
}
else
{
echo 
"<h1>Boletín enviado!</h1>";
}
?>

No estoy 100% seguro de que sirva, ya que no he probado.

Pruébalo tu, y cuéntanos si funcionó
__________________
Twitter/kudry
mkd.la - blog