Foros del Web » Programando para Internet » PHP »

mail() con grandes listas?

Estas en el tema de mail() con grandes listas? en el foro de PHP en Foros del Web. Hola! me han pedido que desarrolle un script, tipo lista de correo que sea capaz de enviar a listas de gran tamaño (con unos 200.000 ...
  #1 (permalink)  
Antiguo 27/01/2002, 06:22
 
Fecha de Ingreso: enero-2002
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
mail() con grandes listas?

Hola!

me han pedido que desarrolle un script, tipo lista de correo que sea capaz de enviar a listas de gran tamaño (con unos 200.000 o mas). Y bueno... la cuestion es si alguno ha creado algo similar alguna vez o no y como podria implementarse.

Mi idea es hacer uso de la funcion MAIL de Perl en lugar de mail(), porque esta ultima puede dar time outs... para alojar los e-mails utilizaria mysql. creeis que seria posible hacer esto? que opinais?


Gracias por todo.
  #2 (permalink)  
Antiguo 27/01/2002, 10:01
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: mail() con grandes listas?

Teóricamente no deberías tener ningún problema usando la función mail() de PHP, lo que deberías hacer es poner sin tiempo límite de ejecución al script:<pre>set_time_limit(0); </pre> Y no deberías tener NINGÚN problema.

Salu2.Ferdy
Feliz Coding


- Fernando Pereda ( Ferdy )
<center><a href="http://www.ferdyx.org/firmas.php"><img src="http://www.ferdyx.org/reg_tira.jpg" border="0"></a></center>
  #3 (permalink)  
Antiguo 27/01/2002, 10:56
 
Fecha de Ingreso: enero-2002
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: mail() con grandes listas?

Exactamente, &quot;teoricamente&quot; pero yo me aferro al refran que dice &quot;de lo dicho al hecho hay un trecho&quot;

si utilizo set_time_limit(0); y me pongo a enviar mensajes temo que el servidor haga crash. no?

  #4 (permalink)  
Antiguo 27/01/2002, 11:58
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 16 años
Puntos: 0
Re: mail() con grandes listas?

Pues... suponte que tienes los mails en una base de datos:

&lt;?php
//te conecatas a tu bd y luego algo como esto:
while $row=mysql_fetch_row($query) {
if mail($row[numerodelcampo], $asunto, $mensaje) {
echo &quot;El mensaje se ha enviado correctamente a la dirección $row[numerodelcampo]&lt;br&gt;&quot;;
} else {
echo &quot;El mensaje no se ha podido enviar a la direccion $row[numerodelcampo]&lt;br&gt;&quot;;
}
}
?&gt;


Si no me he equivocado ( :P), supongo que esto enviará un correo a cada uno, numerodelcampo es el numero del campo de la tabla donde están las direcciones, y obtendrás una larga lista, diciendote en cada caso si se ha podido enviar o no.

Yo tengo un script parecido a este que te he puesto aqui y me funciona muy bien. :)

______________
¿Piensas que el software puede ser algo mas?
<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.
  #5 (permalink)  
Antiguo 27/01/2002, 14:19
 
Fecha de Ingreso: enero-2002
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: mail() con grandes listas?

lical,

si me tiene que aparecer en pantalla &quot;El mensaje se ha enviado correctamente a la dirección $row[numerodelcampo]&quot; por cada e-mail que se envie correctamente y suponiendo que voy a enviar +10.000 del tiron, a buen seguro me petara el navegador.
  #6 (permalink)  
Antiguo 27/01/2002, 16:18
 
Fecha de Ingreso: enero-2002
Mensajes: 88
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: mail() con grandes listas?

Te propongo que vuelques los resultados a un fichero Ascii (Resultados.log); o mejor, creas un fichero de envíos correctos y otro de errores. Luego los puedes descargar y los procesas en local, si deseas.
Saludos,
-ArtuAgui-
  #7 (permalink)  
Antiguo 27/01/2002, 16:30
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 193
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: mail() con grandes listas?

pues quitale el echo&quot;se ha enviado correctamnete o lo que sea&quot;; y y ano te aparecera nada....

la idea q el te ha posteado es muy buena...

<iframe target="_top" src="http://genteloca.com/firma.htm" width="100%" height="70" border="0" framespacing="0" border="0" frameborder="0"> </iframe>
  #8 (permalink)  
Antiguo 27/01/2002, 16:36
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Re: mail() con grandes listas?

Fernando, si tanto te preocupa que se te cuelgue el server o el navegador, entonces porque no utilizas algún soft para envío masivo mails? Ya que si no confias ni en PHP, ni en el server, entonces utiliza otros medios más optimizados para el envio de mails.

Saludos.

PD: Si quieres preocuparte por algo más, asegúrate que el SMTP por el que envies los mails soporte la cantidad de mails que quieres mandar.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #9 (permalink)  
Antiguo 27/01/2002, 18:02
 
Fecha de Ingreso: enero-2002
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: mail() con grandes listas?

hola nuevamente!

Webstudio, no es que no confie, php es mi leugnaje preferido ;) pero comprende que no debe ser una lista de correo simple, porque los numeros a enviar no lo son.

Esta misma pregunta la he hecho tb en el foro de phpbuilder y esta es una de las respuestas:

&quot;I'd like to see you try to send 100 mails using mail() . mail() is a crappy function, way too slow for sending sh*tloads of spam. Either use sockets to talk to the malserver directly, or use a bulkmailer program.&quot;

Tengo pensado utilizar la mysql para almacenar los emails, por otro lado mediante fopen() etc crear varios .txt temporales con XXXX emails en cada uno y hacer uso de un script en perl para enviarlos con el sendmail.

podria funcionar.... no?

gracias por vuestros mensajes.
  #10 (permalink)  
Antiguo 27/01/2002, 18:41
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 16 años
Puntos: 0
Re: mail() con grandes listas?

Yo que tu no me basaría en el podría funcionar sino que probaría probaría y probaría.

Tampoco creo que tengas que mandar los 200.000 mails en unos cuantos segundos, ya se sabe que en esto se tiene que invertir tiempo, y lo hagas como lo hagas, básicamente estás haciendo peticiones al servidor de correo saliente, lo cual (supongo) que dará lo mismo que las pidas desde PHP que desde un socket que desde donde quiera que sea. Pues envias la salida a un log de texto y ya esta. Lo que va a condicionar que se envien más tarde o más temprano los mensajes será el servidor de correo saliente y no por donde le venga la petición.

Por cierto, ese script a mi me manda 200 mails en menos 4 seg al servidor de correo saliente, lo que haga este con ellos pues ya no lo sé. :)

______________
¿Piensas que el software puede ser algo mas?
<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.
  #11 (permalink)  
Antiguo 27/01/2002, 20:34
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Re: mail() con grandes listas?

fernando, en PhPBuilder te han dado la misma respuesta que aqui. Utiliza un programa para envio masivo de Correo.

O bien como dicen, conectate con Sockets al SMTP y envialos directamente.

Son las mejores soluciones.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #12 (permalink)  
Antiguo 28/01/2002, 04:35
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: mail() con grandes listas?

La idea es que guardes varias direcciones de SMTP en un array, de esta forma te vas conectando por sockets a estos servidores y así no saturas uno solo, sino que lo repartes entre varios ;) También deberías pensar en la opción de montarte un servidor SMTP local ( como postfix ) de forma que todos los mails los procesa tu máquina y los va enviando poco a poco a sus destinatarios

Salu2.Feliz Codding

- Fernando Pereda ( Ferdy )
<center><a href="http://www.ferdyx.org/firmas.php"><img src="http://www.ferdyx.org/reg_tira.jpg" border="0"></a></center>
  #13 (permalink)  
Antiguo 28/01/2002, 08:57
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Re: mail() con grandes listas?

A todo esto, me ha entrado una duda... ¿Cuántos mails es lo recomendable a mandar para que no se sobre sature un server SMTP? Me refiero a (cantidad mails)/(unidad de tiempo).

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #14 (permalink)  
Antiguo 28/01/2002, 17:17
 
Fecha de Ingreso: noviembre-2001
Ubicación: Quito - Ecuador
Mensajes: 87
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: mail() con grandes listas?

Hola me podrian decir donde pongo esto:
set_time_limit(0);

si en el principio del script o en algun archivo de configuracion

Gracias, perdon si la respuesta es obvia.
  #15 (permalink)  
Antiguo 29/01/2002, 08:48
 
Fecha de Ingreso: enero-2002
Mensajes: 27
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: mail() con grandes listas?

Yo utilizo un correo masivo a clientes utilizando PHP.
Las direcciones de correo las tengo en una base de datos MySQL.
En total son unos 3.000 correos.

Como el dominio está albergado en máquinas ajenas no puedo cambiar la configuración de Apache ni de PHP, por lo que no puedo cambiar el límite de tiempo del fichero php.ini

Hago lo siguiente:
El script de PHP envía un correo y lo marca como &quot;enviado&quot; en un campo de la base de datos.
A continuación se hace una rellamada a la misma página.
Se buscará en la base de datos la siguiente dirección que esté como &quot;no enviado&quot;.
Se procede de nuevo...

De esa manera, como hay rellamadas, el navegador no &quot;peta&quot; y cada vez se ejecuta de nuevo el script de PHP por lo que no alcanza el límite de tiempo máximo.

Saludos
  #16 (permalink)  
Antiguo 29/01/2002, 17:17
 
Fecha de Ingreso: enero-2002
Mensajes: 29
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: mail() con grandes listas?

Les cuento mi experiencia: Yo tengo en una base mysql un poco mas de 4000 mails, el script que ejecuto en un servidor remoto es similar al que propone Iranio mas arriba: mientras haya mails envia e informa. Tarda aprox 4 minutos en enviar todos los mails, pero el problema no esta en PHP, que anda fenomeno y se la re banca, como dijeron varios al problema es de SMTP, ya que algunos (no se cuantos) de esos mails no se envian. Creo que para no saturar el SMTP seria bueno hacer algo como lo que proponen justo arriba, que les parece?
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.
Respuesta




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