Linux en Espanol
 
Extra?o no me envia los 1249 mensajes servidor de correo (tema #24990)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
en_foro
Forista
Registrado: 2014-05-02
Mensajes: 4

Publicado: 2014-05-02 21:12:10    Asunto: Extra?o no me envia los 1249 mensajes servidor de correo

Hola, buenas tardes, hay un problema que me esta consumiendo el cerebro, he configurado un servidor de correo postfix, a su vez debo enviar 1249 correos a usuarios diferentes, tanto gente que tenga cuenta en el servidor de correo como correos consultados por una BD, para dar soluci?n cree un codigo php, que funciona, env?a los correos, pero por alguna razon no me ejecuta la totalidad del c?digo y solo me env?a 100 correos, y comento que no envia la totalidad del c?digo pues, al final cambio un estado en la base de datos a 0 cuando halla terminado pero no sigue en uno. Gracias por su atencio. Adjunto codigo

[code:1:cdc1d6550f] <?php
include("../../../include/conexion.php");
require_once('../class.phpmailer.php');
$contador=0;
$email_remitente="postmaster@dominio";
$nombre_remitente="Nombre Institucional";
$dirigido="Estimad@ Profesional";

$sql10='select * from datos_personales';
$ejecutar10=mysql_query($sql10);
$sql30='select * from mensajes where estado=1';
$ejecutar30=mysql_query($sql30);
$fila30=@mysql_fetch_array($ejecutar30);
while($fila10=@mysql_fetch_array($ejecutar10))
{
$sql20='select * from email where id='.$fila10["id_e"];
$ejecutar20=mysql_query($sql20);
while($fila20=@mysql_fetch_array($ejecutar20))
{
$nombre_destinatario= $fila10["nombre"].' '. $fila10["primer_apellido"] .' '. $fila10["segundo_apellido"];
$encabezado=$dirigido.' '.$nombre_destinatario;
$email_destinatario = $fila20["email"];
$mail = new PHPMailer(true);
$mail->IsSMTP();
try {
$mail->Host ="IP";
$mail->Port = ##;
$mail->AddReplyTo($email_remitente, $nombre_remitente);
$mail->Password="********";
$mail->AddAddress($email_destinatario, $nombre_destinatario);
$mail->SetFrom($email_remitente, $nombre_remitente);
$mail->AddReplyTo($email_remitente, $nombre_remitente);
$mail->Subject = $fila30["asunto"];
$mail->IsHTML(true);
$mail->Timeout=3600;
$mail->Body = $fila30["mensaje"];
if($fila30["adjunto"]) {
$mail->AddAttachment('adjuntos/'.$fila30["adjunto"]);
}
$mail->Send();
if($mail->Send()){
$contador++;
echo $nombre_destinatario.', Ok<br>';
}
}
catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo
$e->getMessage(); //Boring error messages from anything else!
}
mysql_free_result($ejecutar30);
}
mysql_free_result($ejecutar20);
}
mysql_free_result($ejecutar10);
echo '<p> Numero de mensajes enviados = '.$contador.'</p>';
$sql40='update mensajes set estado=0 where estado!=0';
$ejecutar40=mysql_query($sql40);
mysql_close();
?>[/code:1:cdc1d6550f]
Y Eectivamente imprime el nombre de los usuarios que envia y ok, pero no llega al final ni muestra la cantidad de correos enviados ni cambia EL ESTADO de mensaje a 0. Gracias por su atenci?n y agradezco cualquier colaboraci?n.
[/quote]
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2014-05-02 21:39:53    Asunto:

Hola.

Sin m?s informaci?n es dif?cil saber.

Yo comenzar?a por ver si es una cuesti?n de timeout.
Puedes intentar dar m?s tiempo con set_time_limit, aunque creo que si ejecutas desde l?nea de comandos no hay l?mite.

Tambi?n podr?a ser que un registro concreto de la base de datos tenga alg?n problema que haga que se cancele el script. Deber?as poner varias l?neas echo "..." con mensajes que te iniquen por donde va pasando y con qu? datos exactos. Si siempre se para en el mismo registro, debes analizar si tiene alg?n problema que haga que cancele.
Si tal problema existiera, podr?a ser del mysql, por ejemplo por corrupci?n del fichero de datos, del correo por ejemplo por una direcci?n mal formada que le haga volverse loco, etc.

Saludos.
en_foro
Forista
Registrado: 2014-05-02
Mensajes: 4

Publicado: 2014-05-06 21:46:11    Asunto:

Gracias por tu respuesta, estuve explorando la base de datos y mi script se detiene porque la cuenta de correo no existe, y es una cuenta de correo que un usuario ingreso, pero es agena a la cuenta local. Pero lo inquietante es que no me imprime la excepci?n y se cancela de inmediato
en_foro
Forista
Registrado: 2014-05-02
Mensajes: 4

Publicado: 2014-05-07 18:29:06    Asunto:

ya logre controlar y verificar que los correos existan, pero ahora el problema es que se detiene por tiempo, si alguien tiene conocimiento de como configurar el php.ini para que siga su ejecucion. tengo la certeza de que el bucle acaba pero, debo adjuntar archivos, lo que hace lento el envio de correo. Gracias por cualquier colaboraci?n
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2014-05-07 20:30:50    Asunto:

[quote:87eec46fcc="miguelgf"]
Puedes intentar dar m?s tiempo con set_time_limit, aunque creo que si ejecutas desde l?nea de comandos no hay l?mite.
[/quote:87eec46fcc]

Saludos.
en_foro
Forista
Registrado: 2014-05-02
Mensajes: 4

Publicado: 2014-05-09 19:50:58    Asunto:

Gracias miguel por tu ayuda, depure los nuevos correos que registraron los usuarios verificando si exist?an y logre hacer el env?o de la totalidad de los correos ejecutando desde la linea de comandos. Gracias





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries