Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/12/2008, 07:22
yazo
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 21 años
Puntos: 3
Dividir consulta MySQL para newsletter

Hola chic@s,

Os cuento un poco el problema que tengo haber si sabeis como puedo hacerlo.

He desarrollado un newsletter en php con apoyo de MySQL, el programa usa la clase Swift Mailer y la opción que tiene esta para enviar newletter (http://www.swiftmailer.org/wikidocs/v3/sending/batch)

Lo que pasa es que cuando eran pocos no pasaba nada, lo enviaba sin problemas, el problema es que ahora que hay unos 3000 no me deja enviarles todos a la vez y se me bloquea el programa.
Mi duda es si hay alguna forma para poder dividir el enviarles de forma automática en varias veces, por ejemplo en grupos de 100 emails.

El código que uso es el siguiente:
Código PHP:
        //Incluimos la librería Swift
        
require_once "lib/Swift.php";
        require_once 
"lib/Swift/Connection/SMTP.php";
        
        
//Propiedades para enviar por SMTP
        
$smtp =& new Swift_Connection_SMTP("mail.dominio.com"587);
        
$smtp->setUsername("[email protected]");
        
$smtp->setpassword("contraseña");
         
        
//Propiedades de la clase
        
$swift =& new Swift($smtp);
 
        
$message =& new Swift_Message($asunto$cuerpo);
        
$message->setContentType("text/html");
        
        
//Creamos la lista de recepción
        
$recipients =& new Swift_RecipientList();
        
        
//Enviamos los emails
        
$resultadoemails mysql_query("SELECT email FROM newsletter"$conexion);
        while(
$newsletter mysql_fetch_array($resultadoemails)){
            
//Añadimos un destinatario
            
$recipients->addTo($newsletter['email']);
        }
        
        
//Otra forma de enviar el newsletter
        
$batch =& new Swift_BatchMailer($swift);
        
$batch->setMaxTries(2);
        
$batch->setMaxSuccessiveFailures(3);
        
        if (
$num_sent $batch->send($message$recipients, new Swift_Address("[email protected]""Nombre"))){
            echo 
"Enviado";
        }
        
        
//Desconectamos y vaciamos
        
$batch->flushFailedRecipients(); 
¿Alguien sabe como solucionarlo?

Muchas Gracias