Foros del Web » Programando para Internet » PHP »

envío masivo de mails en PHP

Estas en el tema de envío masivo de mails en PHP en el foro de PHP en Foros del Web. Hola Tengo que hacer un envío de newsletter masivo a contactos de una base de datos MySQL. Para que no me tomen como SPAM resolví ...
  #1 (permalink)  
Antiguo 02/07/2009, 14:42
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
envío masivo de mails en PHP

Hola

Tengo que hacer un envío de newsletter masivo a contactos de una base de datos MySQL.

Para que no me tomen como SPAM resolví hacer un bucle que envía uno por uno los mails a cada destinatario.

El tema es que son 7.500 contactos, y seguramente voy a tener que repetir los bucles con algún tiempo de descanso en el medio.

Conocen un link a un trabajo similar para hacerme una idea de como resolverlo?

Calculo que cada X mails debería redirigir a otro PHP que espere y al volver envíe otros X mails hasta que no queden registros en la BD.

Gracias
  #2 (permalink)  
Antiguo 02/07/2009, 14:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: envío masivo de mails en PHP

Yo tengo un sistema que envia 10 mil emails, ahora bien, te comento que mi servidor solo me permite enviar 200 por hora, asi que antes de entregarte cualquier codigo te digo que consultes con tu proveedor de hosting cual es la cantidad de emails que te permiten enviar.

Mientras te comento que al ser una cantidad tan grande tener que esperar en el explorador te tomaria casi un dia terminar, en que plataforma estas trabajando? porque si es en Linux te puedo ayudar a hacer algo con cronjobs (tareas programadas).
  #3 (permalink)  
Antiguo 02/07/2009, 15:08
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: envío masivo de mails en PHP

Tenés razon. Al ser de esa forma ocuparía el explorador por muchísimo tiempo.

Estoy esperando la respuesta para ver la cantidad máxima de mails que puedo enviar por hora.

Pero puedo asegurar ya mismo que puedo enviar al menos 10 mails por minuto (lo hacía antes con otra aplicación).

así que supongamos que envío esa cantidad.

Estoy trabajando sobre plataforma Linux, efectivamente.
  #4 (permalink)  
Antiguo 02/07/2009, 15:14
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: envío masivo de mails en PHP

Tenés razon. Al ser de esa forma ocuparía el explorador por muchísimo tiempo.

Estoy esperando la respuesta para ver la cantidad máxima de mails que puedo enviar por hora.

Pero puedo asegurar ya mismo que puedo enviar al menos 10 mails por minuto (lo hacía antes con otra aplicación).

así que supongamos que envío esa cantidad.

Estoy trabajando sobre plataforma Linux, efectivamente.
  #5 (permalink)  
Antiguo 02/07/2009, 15:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: envío masivo de mails en PHP

Bueno, te comento lo que haria yo, con un while armo un bucle, sin espera alguna, pero a traves de un contador cuando llega al limite (en tu caso seria 10), le agrego un sleep() con por ejemplo 600 segundos, ya que la funcion utiliza segundos y 600 equivale a 10 minutos.

De esa manera detengo el envio y al finalizar la espera seguira contando, por otro lado le agrego una casilla en la tabla de la base de datos, en la cual a traves del codigo de envio pregunto y si se envio correctamente le pongo un 1 y sino un 0.

A su vez dentro del bucle, aquellos mails que no se envien correctamente los meto en un array, y al finalizar el script principal me mando un mail a mi casilla de correo de administracion del sitio con los mails que no pudieron ser enviados.

Por ultimo al finalizar todo el script a la casilla de la base de datos a aquellos mails donde al principio les habia puesto un 1, les voy a poner un 2 para saber que pueden volver a recibir un email publicitario mio.

El script lo correria una vez a la semana con cronjobs, configurandolo para que ejecute mailer.php el lunes a las 9 de la mañana, por dar un ejemplo.

Espero que te sirva y se entienda, cuando arranques el codigo si necesitas una mano avisame.
  #6 (permalink)  
Antiguo 02/07/2009, 15:45
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: envío masivo de mails en PHP

Ante todo, gracias por la mano.

Ahora
Si entendí bien la lógica que planteas. Los newsletters en ese caso se enviarían de forma automática, los días que yo disponga.

En mi caso, hay un administrador que permite crear newsletters, almacenarlos y decidir cuando envío cual.

Mientras esperaba para leer tu respuesta se me ocurrió esto:

Cuando el usuario presione "Enviar newsletter" lo único que haría el PHP será poner en 1 un campo de la base de datos del newsletter.

Se me ocurre que el cron jobs podría ejecutar un PHP cada 1 minuto todo el tiempo, donde pregunta "hay algo en 1?".

Si hay algo en 1, hace un bucle enviando X cantidad de mails.

Si falla un envío guardo el ID de usuario en un array (buena sugerencia esa)

Cuando termina el bucle capturo el último ID enviado en otro campo de la BD de Newsletter

El Cron jobs se ejecuta dentro de otro minuto y hace lo mismo (a partir del ultimo ID)

Cuando no encuentra más registros, pone el campo en 0 de nuevo.

NO DEJO QUE EL USUARIO ENVÍE 2 NEWSLETTERS A LA VEZ (que operativamente no representa gran complicación)

Ahora, la pregunta sería, que tan ineficiente es que un Cron jobs ejecute un script cada minuto aunque no tenga que hacer nada (... aunque de todas formas ejecuta un código muy muy pequeño).

Saludos
  #7 (permalink)  
Antiguo 02/07/2009, 15:51
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: envío masivo de mails en PHP

usen phplist


salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #8 (permalink)  
Antiguo 02/07/2009, 15:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: envío masivo de mails en PHP

Nose hasta que punto podes configurar un cronjobs que funque cada 1 minuto, imaginate que es como el administrador de tareas de Windows, por eso la idea que te di de hacer el envio 1 vez a la semana.

Para implementar el metodo que planteas yo usaria exec() con el parametro -f o-p para que se ejecute desde el servidor sin la necesidad del explorador, pero hay que ver si tu hosting lo tiene permitido, la mayoria (como el mio), las funciones como exec(), system(), y parecidas estan bloqueadas.

Edit:
Cita:
Iniciado por aldo1982 Ver Mensaje
usen phplist


salu2
Personalmente no uso clases ni scripts prediseñados, me gusta hacer los mios propios, de todas formas he probado PHPList y no es eficiente para utilizar como newsletter service.
  #9 (permalink)  
Antiguo 02/07/2009, 15:57
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: envío masivo de mails en PHP

La verdad que no había usado Cron Jobs antes.

Supongo que podría armar el archivo de la forma que me recomendas (con el Sleep ())

Y a eso le sumo que el usuario al ejecutar el envío ponga en 1 el campo del newsletter.

Después ejecutaría el archivo con Cron Jobs... todos los días a una determinada hora, permitiendo un envío por día.

Muchas gracias!!
  #10 (permalink)  
Antiguo 02/07/2009, 16:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 355
Antigüedad: 15 años, 1 mes
Puntos: 4
Respuesta: envío masivo de mails en PHP

OJO con enviar emails todos los dias, te pueden bloquear el host completo y vas a terminar teniendo problemas legales, te lo digo por experiencia personal.

Cualquier duda de codificacion pregunta!
  #11 (permalink)  
Antiguo 02/07/2009, 16:07
 
Fecha de Ingreso: diciembre-2002
Mensajes: 15
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: envío masivo de mails en PHP

(Por lo menos ya estamos hablando de cuestiones legales y no técnicas, me quedo un poco más tranquilo con que me apagaste el fuego, jajaja)

Es un buen dato.

Realmente la intención no es enviar mails todos los días, es solo para que el cliente "tenga la posibilidad de enviar mails el día que quiera"... se me ocurre, por si tiene algún evento o comunicado donde se le pase la fecha de envío automático no pierda otra semana.

Por ahi una solución sería tener otra tarea Cron Job (no se si se puede), donde si ha realizado un envío, no pueda hacer otro por... 2, 3, X días.
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 18:36.