Foros del Web » Programando para Internet » PHP »

Varios emails, uso de memoria y CPU

Estas en el tema de Varios emails, uso de memoria y CPU en el foro de PHP en Foros del Web. Buenas Noches Ante todo, he buscado ya en el foro y no he hayado respuesta mi pregunta. Tengo que enviar emails a unas 800 personas, ...
  #1 (permalink)  
Antiguo 26/10/2006, 19:21
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Varios emails, uso de memoria y CPU

Buenas Noches


Ante todo, he buscado ya en el foro y no he hayado respuesta mi pregunta.

Tengo que enviar emails a unas 800 personas, personalizados los saludos, contenido similar.

Basicamente se me ocurrio con un while, obtener los emails y usar la funcion mail() seguido de un sleep(8), o sea que entre cada email que envie espere 8 segundos.

Esto funciona, al menos lo probe con 10 emails y esta impecable..pero...

Si lo uso con 800 emails, se va a demorar poco menos de 2 hrs en enviar el correo.
¿usara eso demasiada cpu?,¿me matara el script el servidor? creo qmue tiene 30s de respuesta... ¿de que forma podria dejarlos en cola, o que ejecute el script X veces cada X tiempo?


con 3 emails usa aprox 83KB de ram (segun php), no sé si es proporcional los KB a la cantidad de email, o sea.. como tope llegaria a usar unos 880KB de ram? (80 del script + 1kb por email, eso mas o menos usa segun mis calculos con 1,2 y 3 emails), ¿estaria bien esa cantidad de memoria?.

de que otra forma seria factible enviar esos emails? (no tengo limite por hora, pero me preocupa el CPU y la ram)

¿de que forma podria ejecutar ese script en "background" sin tener posibilidad de usar system o exec? para que, cuando el cliente presione "enviar", el proceso sea interno y no tenga q esperar 2 hrs para cerrar la ventana... es factible eso??


Alguna sugerencia?

Saludos y gracias
  #2 (permalink)  
Antiguo 26/10/2006, 20:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Cuando tu usas usleep(), tengo entendido que PHP entra en pausa por lo que el procesador se pasa a Idle, asi que no creo que por CPU tengas problemas.

Para el tiempo de ejecucion usa, set_time_limit para que no se pare el servicio por tiempo.
  #3 (permalink)  
Antiguo 27/10/2006, 05:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo mejor es NO lanzar por un "navegador" el proceso. Fijate que si lanzas la ejecución de tu script PHP por HTTP, tu "cliente" (el navegador) se queda a la espera hasta terminar la ejecución del script. El servidor HTTP y PHP pueden imponter "timeOut" sobre el tiempo que están a la espera de recibir todos los datos a enviar.

Para solventar ese problema puedes usar la función:

register_shutdown_function()
http://www.php.net/manual/es/functio...n-function.php

Así puedes lanzar el proceso desde tu navegador y dejarlo "en background" ejecutandose ..

También podrías programar tu script de proceso en modo "CLI" (Command Line Interface) y lanzar a ejecutar el proceso por un Cron Job .. De hecho si tu llevases el control de los e-mails enviados, podrías ejecutar "tandas" de envios de e-mails por tiempo (sin tener que hacer un "sleep()") por si tu servidor de correo no acepta más de N e-mails por X tiempo.

OJO con el tiempo de ejecución de tu script, debes aumentarlo vía set_time_limit()

Si te preocupa la optimización de recusos del servidor .. NO uses PHP. Date cuenta que PHP es un lenguaje "interpretado". Usa algún lenguaje "compilado" o aplicación ya hecha "compilada" y con PHP tan sólo controla cuando ejecutarla .. pero no su envio y menos con mail() .. al menos por sockets directo por ejemplo con PHPMailer (http://phpmailer.sourceforge.net) que permite enviar el e-mail directamente por SMTP, ahí tendrás más control sobre el envio del e-mail .. incluso poder usar vários servidorees SMTP para "balancear" la carga del envio ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 27/10/2006, 12:25
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Estupendo, problema solucionado con phpmailer y la funcion de conexion que me paso cluster.


Muchas gracias por vuestra ayuda.
  #5 (permalink)  
Antiguo 27/10/2006, 17:48
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
el unico problema q tengo si, y que no lo pude solcuionar fue a la hora de usar......register_shutdown_function()
segun vi y probe creo que no hay manera de pasar algun parametro para que cierre la conexion o cierre la venatana (con javascript) o similar, la pantalla se queda en blanco y hay que cerrarla de forma manual. (mientras sigue trabajando en background)
(probre enviando headers, usando exit dentro de mi funcion, etc y nada)

any idea?
  #6 (permalink)  
Antiguo 28/10/2006, 20:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por NRLABS Ver Mensaje
el unico problema q tengo si, y que no lo pude solcuionar fue a la hora de usar......register_shutdown_function()
segun vi y probe creo que no hay manera de pasar algun parametro para que cierre la conexion o cierre la venatana (con javascript) o similar, la pantalla se queda en blanco y hay que cerrarla de forma manual. (mientras sigue trabajando en background)
(probre enviando headers, usando exit dentro de mi funcion, etc y nada)

any idea?
Bueno . .realmente la función que comentas su principal funcionalidad es la de "no depender" de que el cliente cierre o termine su conexión para que el proceso continue.

El proceso se ejecuta ya en "segundo plano" al llamar a dicha función que registra la tuya. El cliente recibe su página igualmente y la gracia de esa función es que el proceso continuó en el servidor y ya no depende de las acciones del cliente. Justo al contrario de un proceso "normal" .. donde el "cliente" se queda a la espera de que el script PHP finalice su proceso.

NO es una función para dejarla en "segundo" plano desde un proceso PHP "puro".

Pero .. como la función en cuestión ya "registra" a tu otra función de proceso y sigue este aunque el cliente cierre su "ventana" .. no sé que problema tienes. Yo lo que hago es:

Opción A:
Muestro un mensaje que diga "Su proceso se está ejecutando. Puede cerrar esta ventana cuando guste".

Opción B:
Muestro el proceso de ejecución .. Por ejemplo si envio e-mails .. voy haciendo registro del proceso en una BBDD, en esa página voy "refrescando" las consultas a la BBDD que hago el registro para mostrar su estado de avance.

Opción C:
Simplemente cierro la ventana. pero para eso .. antes lanzo el proceso en una ventana (window.open ... con javascript) .. Ahí si es necesario por un "timer" o al instante en un evento "onLoad()" (de javascript) cierro la ventana (window.close .. ) con más javascript.

En este momento tu dices que tu ventan se queda en "blanco" .. pues no es más que por qué tu no envias nada al cliente .. un "echo" .. o algo:

Código PHP:
<?php

function tufuncion() {
  
// el proceso que corresponda.
}

register_shutdown_function("tufuncion");

echo 
"Ya puede cerrar esta ventana ...";

?>
Si ese script .. lo lanzas desde otro con javascript .. puedes poner un "window.close" .. sólo veras una ventana abrir y cerrarse .. No es muy "bonito" pero .. "es lo que hay" .. Puedes usar más javascript como te comento para decir alguna cosa tipo "Proceso en curso .. esta ventana se cerrará en N segundos" (y con un "timer" de javascript .. la cierras a N tiempo si es que el usuario no la cierra a mano ..


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 29/10/2006, 09:46
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Código PHP:
    set_time_limit(8400);
    
    function 
enorme($qcl,$rem)
    {
    
    while (
$rcl mysql_fetch_array($qcl)) {
    
$asunto=$rem['asunto'];
    
$asunto=str_replace("[!rut!]"$rcl['rut'] , $asunto);
    
$asunto=str_replace("[!nombre!]"$rcl['nombre'] , $asunto);
    
$asunto=str_replace("[!apellido!]"$rcl['apellido'] , $asunto);
    
$asunto=str_replace("[!email!]"$rcl['email_1'] , $asunto);
    
$asunto=str_replace("[!direccion!]"$rcl['direccion'] , $asunto);
    
$asunto=str_replace("[!fecha!]"date("d-m-Y"), $asunto);    
    
    
$texto=$rem['cuerpo'];
    
$texto=str_replace("[!rut!]"$rcl['rut'] , $texto);
    
$texto=str_replace("[!nombre!]"$rcl['nombre'] , $texto);
    
$texto=str_replace("[!apellido!]"$rcl['apellido'] , $texto);
    
$texto=str_replace("[!email!]"$rcl['email_1'] , $texto);
    
$texto=str_replace("[!direccion!]"$rcl['direccion'] , $texto);
    
$texto=str_replace("[!fecha!]"date("d-m-Y"), $texto);
    
$cabeceras  "MIME-Version: 1.0\r\n";
    
$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
    
$cabeceras .= "FROM: [email protected]\r\n";



    if(!
mail($rcl['email_1'],$asunto,html_entity_decode($texto),$cabeceras))
        {
            
$mensaje_E "El email es ".$rcl['email_1'];
        
mail("[email protected]","Fallo envio email OCIO",$mensaje_E);
        }     else {

sleep(8);
        }
    
        
        



    }
    
    
}

register_shutdown_function(enorme,$qcl,$rem);
echo 
"Sus emails seran enviados, cierre la ventana"

Eso es lo extraño, tengo ese codigo, funciona, pero... al cliente no le devuelve ""echo "Sus emails seran enviados, cierre la ventana";"", si no que comienza a enviar los emails, cierro la ventana y los sigue enviando pero nunca lo muestra...

El texto aparece una vez que ya se han enviado todos los emails (comprobado) y aunque coloque el echo al principio, se espera que se procese toda la pagina.. lo encuentro extraño, el php del servidor es 4.3.3


Saludos
  #8 (permalink)  
Antiguo 29/10/2006, 13:51
 
Fecha de Ingreso: mayo-2006
Ubicación: Argentina (Buenos Aires,CABALLITO)
Mensajes: 331
Antigüedad: 18 años
Puntos: 9
si mal no recuerdo,si usas la funcion flush al navegador se le va a imprimir los resultados como le vallan llegando y no va a esperar que termine de procesarce todo el script en el servidor php.
  #9 (permalink)  
Antiguo 29/10/2006, 14:20
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Sip
Gracias, lo habia leido pero no entendia como aplicarlo, sin querer pille un post en un blog que explicaba como...y voila.


problema solucionado

Muchas gracias
  #10 (permalink)  
Antiguo 29/10/2006, 19:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por NRLABS Ver Mensaje
Sip
Gracias, lo habia leido pero no entendia como aplicarlo, sin querer pille un post en un blog que explicaba como...y voila.


problema solucionado

Muchas gracias
Y .. que hicistes al respecto? .. Recuerda .. si obtienes la solución por otro lado, no digas que lo conseguistes .. indica "como" .. Si es un llink hacia otro sitio .. dejalo y así aprendemos todo.

Por mi parte sólo te puedo indicar que así como te mostré lo uso .. sólo que no hago ningún "sleep()" esa podría ser la diferencia?.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 29/10/2006, 19:30
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
http://ben.milleare.com/archives/000210.html alli explica algo simple, en los comentarios aparecen ciertas limitaciones de los navegadores y como solucionarlas.. (por ejemplo, que se necesite un minimo de datos en bytes para mostrar)
Código PHP:

for($i=0;$i<10;$i++)
{
echo 
"Enviando...puede cerrar esta ventana<br>";
        
flush();

agregue el mismo codigo del ejemplo, muestra ese mensaje 10 veces y sigue cargando la pagina, con esto el cliente ya sabe lo que tiene que hacer. Tambien podria ser con un JS como
Código PHP:
echo "
<head>
<script>
function cerrar()
{
alert(\"Enviando mensajes, puede cerrar la ventana\")
window.close()

</script>
</head>
<body onload=cerrar()></body>

"


Ya es cosa de la imaginación,




Saludos

Última edición por NRLABS; 29/10/2006 a las 19:36
  #12 (permalink)  
Antiguo 29/10/2006, 19:41
 
Fecha de Ingreso: mayo-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
Hola NRLABS, podría postear el codigo para ver como quedo?
Saludos!
  #13 (permalink)  
Antiguo 29/10/2006, 19:45
 
Fecha de Ingreso: mayo-2006
Mensajes: 119
Antigüedad: 18 años
Puntos: 0
Pregunta

Hola NRLABS, podría postear el codigo para ver como quedo?
Saludos!

Última edición por ale_g; 29/10/2006 a las 19:52
  #14 (permalink)  
Antiguo 29/10/2006, 19:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por NRLABS Ver Mensaje
http://ben.milleare.com/archives/000210.html alli explica algo simple, en los comentarios aparecen ciertas limitaciones de los navegadores y como solucionarlas.. (por ejemplo, que se necesite un minimo de datos en bytes para mostrar)
Código PHP:

for($i=0;$i<10;$i++)
{
echo 
"Enviando...puede cerrar esta ventana<br>";
        
flush();

agregue el mismo codigo del ejemplo, muestra ese mensaje 10 veces y sigue cargando la pagina, con esto el cliente ya sabe lo que tiene que hacer. Tambien podria ser con un JS como
Código PHP:
echo "
<head>
<script>
function cerrar()
{
alert(\"Enviando mensajes, puede cerrar la ventana\")
window.close()

</script>
</head>
<body onload=cerrar()></body>

"


Ya es cosa de la imaginación,




Saludos
Ahh .. Ok ..

Ahora veo por qué no tenía problemas en mi caso: "Adorné" la salida del mensaje que te indiqué con HTML completo .. es decir ... generé una página HTML como corresponde (con sus <html> .. </html> .. ) entre unas cosas y otras supongo que sobrepasé el tamaño mínimo de ciertos navegadores para empezar a mostrar lo que recibieron.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 04/01/2007, 16:31
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: Varios emails, uso de memoria y CPU

Esto fue usando phpmailer
hago un loop conm los emails obtenidos de la DB y envio cada X segundos, por "background", asi el cliente puede cerrar la ventana
Saludos

Código PHP:

    set_time_limit
(84000); //antes le inidco que el script puede demorarse varias horas en ejecutarse.. y q no lo mate
    
function enorme($qcl,$rem)
    {
    
 require_once(
$_SERVER['DOCUMENT_ROOT']."/admin/emails/class.phpmailer.php");

      
    while (
$rcl mysql_fetch_array($qcl)) {
    
$asunto=$rem['asunto'];
    
$asunto=str_replace("[!rut!]"$rcl['rut'] , $asunto);
    
$asunto=str_replace("[!nombre!]"$rcl['nombre'] , $asunto);
    
$asunto=str_replace("[!apellido!]"$rcl['apellido'] , $asunto);
    
$asunto=str_replace("[!email!]"$rcl['email_1'] , $asunto);
    
$asunto=str_replace("[!direccion!]"$rcl['direccion'] , $asunto);
    
$asunto=str_replace("[!fecha!]"date("d-m-Y"), $asunto);    
    
    
$texto=$rem['cuerpo'];
    
$texto=str_replace("[!rut!]"$rcl['rut'] , $texto);
    
$texto=str_replace("[!nombre!]"$rcl['nombre'] , $texto);
    
$texto=str_replace("[!apellido!]"$rcl['apellido'] , $texto);
    
$texto=str_replace("[!email!]"$rcl['email_1'] , $texto);
    
$texto=str_replace("[!direccion!]"$rcl['direccion'] , $texto);
    
$texto=str_replace("[!fecha!]"date("d-m-Y"), $texto);


//$cabeceras  = "MIME-Version: 1.0\r\n";
    //$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
      
 

  
$mail = new PHPMailer();
      
$mail->Mailer "smtp";
      
$mail->Host "viva.chile.cl";
      
$mail->SMTPAuth true;
      
$mail->Username "VIVACHILE"
      
$mail->Password "VIVACHILE";
      
$mail->From "[email protected]";
      
$mail->FromName "Grande chile!"
         
$mail->ContentType"text/html";
      
$mail->Timeout=10


          
$mail->AddAddress($rcl['email_1']);
      
$mail->Subject $asunto;
     
$mail->Body html_entity_decode($texto);
   
//$mail->Body = "<b>ahahaha</b>";
  
     
$exito $mail->Send();
     
$intentos=1
     while ((!
$exito) && ($intentos 5)) { sleep(5); $exito $mail->Send(); $intentos=$intentos+1;    }
 
   if(!
$exito){    $msg_E"Problemas enviando correo electr�ico a ".$valor."<br/>".$mail->ErrorInfo;    
       
mail("[email protected]","Error envio lista correo",$msg_E); }
   
   
  
// flush();
    



    
sleep(2);// dormir dos segundos entre conexion al smtp
    
}
    
    
}

register_shutdown_function(enorme,$qcl,$rem); 

Última edición por NRLABS; 04/01/2007 a las 16:48
  #16 (permalink)  
Antiguo 12/01/2007, 08:42
 
Fecha de Ingreso: enero-2007
Ubicación: Stgo
Mensajes: 1
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Varios emails, uso de memoria y CPU

Hola NRLABS:

Mira soy nuevo en el foro ya q me registre buscando una solucion q ustedes ya dieron con ella, necesito hacer lo mismo q tu, tengo unos 1500 correos en la bd para enviar de una vez, pero mira estuve leyendo las respuestas y analizando el script q esta rebueno, pero me quedo una duda..???, donde estas recuperando los datos de la bd para enviarlos, me refiero al nombre del email, no veo ningun SELECT FORM, o algo parecido..????.

function enorme($qcl,$rem)

a quien llama o q parametros les pasas, bueno mira estoy recien en esto de lo emails y vaya q me a costado a ver si me aclaras un poco mas la cosa.., graciasss
  #17 (permalink)  
Antiguo 12/01/2007, 08:58
 
Fecha de Ingreso: febrero-2002
Ubicación: Chile
Mensajes: 1.573
Antigüedad: 22 años, 2 meses
Puntos: 2
Re: Varios emails, uso de memoria y CPU

Cita:
Iniciado por scorpiollanos Ver Mensaje
Hola NRLABS:

Mira soy nuevo en el foro ya q me registre buscando una solucion q ustedes ya dieron con ella, necesito hacer lo mismo q tu, tengo unos 1500 correos en la bd para enviar de una vez, pero mira estuve leyendo las respuestas y analizando el script q esta rebueno, pero me quedo una duda..???, donde estas recuperando los datos de la bd para enviarlos, me refiero al nombre del email, no veo ningun SELECT FORM, o algo parecido..????.

function enorme($qcl,$rem)

a quien llama o q parametros les pasas, bueno mira estoy recien en esto de lo emails y vaya q me a costado a ver si me aclaras un poco mas la cosa.., graciasss


Eso es poarte de la diea de este foro, no entregar soluciones hechas.

Los parametros que envio en la funcion son, justamente, los datos de la sql

Te envio el codigo completo, que es especifico.

Código PHP:

<?


    
require '../func/func.php';
    
conecta_db();

    while (list (
$clave$val) = each ($_REQUEST)) 
    {
        $
$clave $val;
    }    
    
    
$sem "INSERT INTO t_emails (id_email,cuerpo,fecha,descripcion,asunto) ";
    
$sem.= "VALUES ('','".htmlentities(str_replace("\n""",str_replace("\r"""$texto)))."','".fecha($fecha)."','$descripcion','$asunto') ";
    
$qem mysql_query($sem);
    
    
$sli "SELECT LAST_INSERT_ID()";
    
$qli mysql_query($sli);
    
$rli mysql_fetch_row($qli);
    
$id_email=$rli[0];
    
    for (
$i 0$i sizeof($destinatarios); $i++) {
        
$sde "INSERT INTO t_destinatarios_email (id_email,rut) ";
        
$sde.= "VALUES ($id_email,'$destinatarios[$i]')";
        
$qde mysql_query($sde);
    }

    
$scl "SELECT t_clientes.rut as rut, t_clientes.nombre as nombre, t_clientes.apellido as apellido, ";
    
$scl.= "t_clientes.email_1 as email_1, t_clientes.domicilio as direccion ";
    
$scl.= "FROM t_destinatarios_email, t_clientes WHERE t_destinatarios_email.id_email=$id_email AND t_clientes.rut=t_destinatarios_email.rut ";
    
$qcl mysql_query($scl);

    
$sem "SELECT * FROM t_emails WHERE id_email = $id_email";
    
$qem mysql_query($sem);
    
$rem mysql_fetch_array($qem);

    
    
set_time_limit(84000);
// para navegadores q requieren una cantidad de bytes antes de mostar un contenido.
for($i=0;$i<200;$i++) 

    echo 
".";
    
}


echo 
"<br>Los emails estan siendo enviados, puede cerrar esta ventana";

        
flush();





    
    function 
enorme($qcl,$rem)
    {
    
 require_once(
$_SERVER['DOCUMENT_ROOT']."/admin/emails/class.phpmailer.php");

      
    while (
$rcl mysql_fetch_array($qcl)) {
    
$asunto=$rem['asunto'];
    
$asunto=str_replace("[!rut!]"$rcl['rut'] , $asunto);
    
$asunto=str_replace("[!nombre!]"$rcl['nombre'] , $asunto);
    
$asunto=str_replace("[!apellido!]"$rcl['apellido'] , $asunto);
    
$asunto=str_replace("[!email!]"$rcl['email_1'] , $asunto);
    
$asunto=str_replace("[!direccion!]"$rcl['direccion'] , $asunto);
    
$asunto=str_replace("[!fecha!]"date("d-m-Y"), $asunto);    
    
    
$texto=$rem['cuerpo'];
    
$texto=str_replace("[!rut!]"$rcl['rut'] , $texto);
    
$texto=str_replace("[!nombre!]"$rcl['nombre'] , $texto);
    
$texto=str_replace("[!apellido!]"$rcl['apellido'] , $texto);
    
$texto=str_replace("[!email!]"$rcl['email_1'] , $texto);
    
$texto=str_replace("[!direccion!]"$rcl['direccion'] , $texto);
    
$texto=str_replace("[!fecha!]"date("d-m-Y"), $texto);


//$cabeceras  = "MIME-Version: 1.0\r\n";
    //$cabeceras .= "Content-type: text/html; charset=iso-8859-1\r\n";
      
 

  
$mail = new PHPMailer();
      
$mail->Mailer "smtp";
      
$mail->Host "mail..com";
      
$mail->SMTPAuth true;
      
$mail->Username ""
      
$mail->Password "";
      
$mail->From "";
      
$mail->FromName ""
         
$mail->ContentType"text/html";
      
$mail->Timeout=10


          
$mail->AddAddress($rcl['email_1']);
      
$mail->Subject $asunto;
     
$mail->Body html_entity_decode($texto);
   
//$mail->Body = "<b>ahahaha</b>";
  
     
$exito $mail->Send();
     
$intentos=1
     while ((!
$exito) && ($intentos 5)) { sleep(5); $exito $mail->Send(); $intentos=$intentos+1;    }
 
   if(!
$exito){    $msg_E"Problemas enviando correo electr�ico a ".$valor."<br/>".$mail->ErrorInfo;    
       
mail("ics.cl","Error envio lista correo",$msg_E); }
   
   
  
// flush();
    



    
sleep(2);// dormir dos segundos entre conexion al smtp
    
}
    
    
}

register_shutdown_function(enorme,$qcl,$rem);

?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:44.