Foros del Web » Programando para Internet » PHP »

Envío de Correos dentro de un ciclo

Estas en el tema de Envío de Correos dentro de un ciclo en el foro de PHP en Foros del Web. Holas! Estoy enviando un correo a mis clientes usando PHPMailer, Mailer smtp, Timeout 30. Va perfecto si envío un mail solitario. Pero como mi requerimiento ...
  #1 (permalink)  
Antiguo 29/01/2008, 21:40
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Envío de Correos dentro de un ciclo

Holas!

Estoy enviando un correo a mis clientes usando PHPMailer, Mailer smtp, Timeout 30. Va perfecto si envío un mail solitario. Pero como mi requerimiento es que sea a muchos clientes a la vez, ahí me ha surgido el problemilla.

Guardo todas las cuentas en un arreglo. Al recorrerlo, creo un objeto PHPMailer, lo configuro, y envío el mail al cliente de la posición actual. Busqué en la clase, y no vi que existiera algo como un "destructor" del objeto PHPMailer, por lo cual no lo "cierro" al usarlo (¿tal vez se destruye al enviar el mail?). En fin, el caso es que me pasa que no siempre envía los correos a las personas. Al principio pensé que sería problema con los servicios de correo de los destinatarios, pero no era así, porque si repetía la prueba, esta vez enviaba a otros, mientras no enviaba a los que ya había enviado, y así etc... en una suerte de envío/no envío de resultado "aleatorio".

El error retornado siempre es connect_host. Entiendo que no se está conectando correctamente al host del SMTP todas las iteraciones del ciclo, y por eso se me ocurrió ponerle un sleep() entre cada iteración, para ver si por ahí podía "engañar" al SMTP para que tras enviar el correo en $i, pensara que el que intenta enviar en $i + 1 era totalmente nuevo (que de hecho lo es, pero como el tiempo es tan corto entre órdenes, el SMTP puede pensar que se trata del mismo correo, o no sé...).

Mi pregunta es si hay una forma más "canónica" de hacer lo que estoy haciendo, de modo que no se equivoque al intentar conectar cada vez que quiere enviar un mail del ciclo.

Esto realmente me lleva a preguntar si hay forma de usar el objeto PHPMailer para enviar muchos correos (sin usar AddAdresses), sin tener que crearlo cada vez (específicamente, que se pueda "limpiar" la dirección de email de destino y el resultado del método Send por cada vuelta del ciclo, pero no el resto de los parámetros, de modo que la conexión permanezca abierta)....

(Repito lo de "sin usar el método AddAddresses()" para llenar el "To" con tooooodas las direcciones de destino, pues la idea es que al cliente NO le llegue un mail con cientos de direcciones aparte de la suya en nuestro email.)


Esop.

Muchas gracias de antemano :)
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Última edición por quinqui; 29/01/2008 a las 22:15 Razón: Solucionado :P
  #2 (permalink)  
Antiguo 29/01/2008, 22:09
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Envío de Correos dentro de un ciclo

Solucionado!!!! ^o^

A pesar de haber leído la guía de uso de PHPMailer publicada en este link: http://www.programacion.com/php/articulo/phpmailer/
no habia visto que en el ejemplo "avanzado" venía precisamente la forma de enviar a muchas direcciones con el mismo objeto PHPMailer!! XD Jajajaja!!!

Gracias de todos modos por leer, espero que el link les sirva a ustedes también :P
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 30/01/2008, 01:47
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: Envío de Correos dentro de un ciclo

Si no quieres usar:
Código PHP:
AddAddresses() 
Puedes usar la copia oculta:
Código PHP:
AddBCC() 
yo personalmente la utilizo para un boletín de noticias ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
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:00.