PHP - Envios Masivos de Email

   
Vista:

Envios Masivos de Email

Publicado por Diego (25 intervenciones) el 18/11/2014 21:00:40
Buenas tardes! Escribo porque quisiera consultar por envios masivos de email.
El tema es asi, necesito enviar correos a clientes alojados en un base de datos, en este momento estoy trabajando localmente y pude enviar a travez de PHPmailer los mensajes y llegaron correctamente. Es mas entre mensaje y mensaje coloque un sleep y hay un retraso entre los mensaje motivo para que me deje enviar la cantidad de email que podria en una hora que son 200 aproximadamente, que es lo que me da mi servicio de hosting.

Ahora bien. Lo que he notado es que cuando envio el correo se queda colgado en la pagina. Quisiera saber si hay alguna manera de que eso quede trabajando internamente y pueda enviar todos los correos.

Intente con register_shutdown_function(); pero no pasa nada, algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
require_once('class.phpmailer.php');
require_once('class.smtp.php');
 
//cuerpo del mensaje
.
.
.
.
 
 
function enviar(){
 
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Timeout=10;
//$cabeceras  = "MIME-Version: 1.0\r\n"; 
//$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
 
//Nuestra cuenta
$mail->Username ='micorreo';
$mail->Password = 'pass; //Su password
$mail->IsHTML(true);
 
$conexion=mysqli_connect("localhost","root","","bd")or die("Error en la conexion");
$registros=mysqli_query($conexion,"select email from tabla")or die(mysqli_error($conexion));
while($reg=mysqli_fetch_array($registros)){
$mail->AddAddress($reg['email']);
$mail->Subject = $asunto;
$mail->Body = $mensaje;
 
 
if($mail->Send())
$mail->clearAddresses();
$mail->clearAttachments();
sleep(100);
//le puse 100 para exagerar el retraso y corroborar que llega
}
}
echo "<br>Los email estan siendo enviados puede cerrar la ventana";
register_shutdown_functionshutdown_function('enviar');
?>

Que estaria haciendo mal

El envio se realiza manualmente cuando la persona quiera mandarlo

Muchas gracias. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Envios Masivos de Email

Publicado por xve (5512 intervenciones) el 19/11/2014 08:48:30
Hola Diego, por lo que comentas, creo que el problema esta en el timeout del navegador, que a partir de los 30 segundos cierra el hilo. puede ser este el problema?

Si es así, la manera de solucionarlo, es ejecutar tu script de terminal o consola, sin un navegador... no se que sistema operativo utilizas, pero por ejemplo desde Linux (creo que es igual en Microsoft Windows), puedes ejecutar php -f tuarchivo.php y lo ejecutara como un bat de msdos, y ahí, no hay timeout's.

No se si te puede ser de ayuda.

Para hacerlo desde el navegador, es un poco mas complicado, pero también se puede hacer refrescando la pagina cada n envíos.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Envios Masivos de Email

Publicado por Diego (25 intervenciones) el 19/11/2014 17:36:51
Hola! Gracias por responder el mensaje, bueno encontre una forma de que siga enviando aun cerrando la pagina que es colocar al principio estas instrucciones:

ignore_user_abort(1); // sigue ejecutando aunque el usuario cerro la conexión
set_time_limit(0); // el script no tiene límite de tiempo

por ahora esta funcionando ok, igual estoy haciendo nuevas pruebas pero creo que con eso va bien. De todas maneras les aviso cualquier cosa... gracias por responder!

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Envios Masivos de Email

Publicado por xve (5512 intervenciones) el 19/11/2014 19:37:10
Hola Diego gracias por compartirlo!!! ya nos comentaras que tal te va funcionando!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar