Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2015, 14:06
Avatar de fieroso
fieroso
 
Fecha de Ingreso: diciembre-2009
Mensajes: 127
Antigüedad: 14 años, 4 meses
Puntos: 1
Envio rápido con clase phpmailer

Hola, vengo a exponer un problema con el cual llevo semanas pero no sé cómo solucionar, se trata del envío de correos mediante la clase phpmailer, el problema es la lentitud, cuando ejecuto el script quizás tenga que enviar 500 correos por ejemplo y se demora casi 30 minutos.

Código PHP:
        //Creo el contenido del email
        
require 'phpmailer/class.phpmailer.php'//incluyo la clase necesaria para el envío
        //Crear una instancia de PHPMailer
        
$mail = new PHPMailer();
        
//Definir que vamos a usar SMTP
        
$mail->IsSMTP();
        
//Esto es para activar el modo depuración. En entorno de pruebas lo mejor es 2, en producción siempre 0
        // 0 = off (producción)
        // 1 = client messages
        // 2 = client and server messages
        
$mail->SMTPDebug  0;
        
//Ahora definimos gmail como servidor que aloja nuestro SMTP
        
$mail->Host       'mail.midominio.com';
        
//El puerto será el 587 ya que usamos encriptación TLS
        
$mail->Port       25;
        
//Definmos la seguridad como TLS
        
$mail->SMTPSecure 'tls';
        
//Tenemos que usar gmail autenticados, así que esto a TRUE
        
$mail->SMTPAuth   true;
        
//Definimos la cuenta que vamos a usar. Dirección completa de la misma
        
$mail->Username   "[email protected]";
        
//Introducimos nuestra contraseña de gmail
        
$mail->Password   "mipass";
        
//Definimos el remitente (dirección y, opcionalmente, nombre)
        
$mail->SetFrom('[email protected]''minombre');
        
//Esta línea es por si queréis enviar copia a alguien (dirección y, opcionalmente, nombre)
                
while($matrizdestinatarios=mysql_fetch_array($destinatarios)){ //recorro la matriz y  hago el envío uno a uno a cada usuario
        //Y, ahora sí, definimos el destinatario (dirección y, opcionalmente, nombre)
        
$mail->AddBCC($matrizdestinatarios['email']);
        }
//del while
//aquí ya compongo el mensaje y hago el send 
Básicamento lo que hago es recorrer un array extraido de la base de datos con las direcciones, la demora es en recorrer dicha array e ir introduciendolos en $mail->AddBCC($matrizdestinatarios['email']);

En principio pensaba que fuera por lentitud de la máquina pero nada después ha sido probado en máquinas más potentes dando los mismo resultados.

Ahora ya no se si es problema de configuración de php o que de por sí este método es así de lento pero no lo creo ya que supongo que esta clase es usada por empresas y demás que se que tardan escasos segundos en componer esto.

Gracias, agradecería mucho quien me diera un poco de luz sobre el asunto o como hacer un envío más rápido mediante smpt, como pueden ver uso un servidor smtp propio pero de ahí tampoco es el problema lógicamente este funciona perfecto ya que una vez que el script compone la lista mi smtp si envia todos los correos a la vez y llegan a todos en el mismo momento.
__________________
Me gusta la programación y los retos