Page 1 of 1
Sobre outlook y blat
Posted: Mon May 14, 2007 1:26 pm
by TecniSoftware
Tengo las siguientes dudas:
Necesito ( como muchos otros ) enviar una pila de correos, probablemente mas de 1000 a distintas direcciones y cada uno con un pdf adjunto distinto para cada uno.
1)
Probé el envio de mail usando la clase tMail() con outlook express y funciona ok, pero.... hay alguna manera que se haga una cola de mensajes y los envie todos juntos ? por que cada vez que se hace el Activate() los envia uno por uno y el sistema te queda paralizado.
2)
Probé tambien la clase TFBlat() que anda por ahi, le hize unas pequeñas modificaciones y pude enviar exitosamente varios mails, todos llegaron y con su respectivo archivo adjunto, pero... veo que cuando uno hace el llamado a ShellExecute( GetWndApp(), 0, ::cFileBat, 0, 0, SW_HIDE ), el control regresa instantáneamente al sistema y vuelve a enviar otro mail uno tras otro, tras otro... Si tengo que enviar 1000 o mas mails, tengo tres dudas:
a) no hay peligro o probabilidad que se sature la memoria/coneccion/pc ???
b) La otra duda es saber cuando se supone que termine el proceso de envio, o sea, que deben hacer con la pc, dejarla encendida hasta cuando?
c) Que hay con respecto al sistema que genero el llamado al Blat? una vez que se ejecutó el llamado para enviar los mails, puedo cerrar el sistema? o esto hace que se caigan los procesos que llamé a ejecucion?
Tengo que entregar esta utilidad que si bien la terminé y funciona, no se a ciencia cierta si va funcionar con envios masivos o no.
Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina.
Re: Sobre outlook y blat
Posted: Mon May 14, 2007 7:32 pm
by FiveWiDi
TecniSoftware wrote:Tengo las siguientes dudas:
Necesito ( como muchos otros ) enviar una pila de correos, probablemente mas de 1000 a distintas direcciones y cada uno con un pdf adjunto distinto para cada uno.
2)
Probé tambien la clase TFBlat() que anda por ahi, le hize unas pequeñas modificaciones y pude enviar exitosamente varios mails, todos llegaron y con su respectivo archivo adjunto, pero... veo que cuando uno hace el llamado a ShellExecute( GetWndApp(), 0, ::cFileBat, 0, 0, SW_HIDE ), el control regresa instantáneamente al sistema y vuelve a enviar otro mail uno tras otro, tras otro... Si tengo que enviar 1000 o mas mails, tengo tres dudas:
a) no hay peligro o probabilidad que se sature la memoria/coneccion/pc ???
b) La otra duda es saber cuando se supone que termine el proceso de envio, o sea, que deben hacer con la pc, dejarla encendida hasta cuando?
c) Que hay con respecto al sistema que genero el llamado al Blat? una vez que se ejecutó el llamado para enviar los mails, puedo cerrar el sistema? o esto hace que se caigan los procesos que llamé a ejecucion?
.
Alejandro,
me alegra que puedas utilizar TFBlat, al final por causas varias, no pude ponerlo en práctica.
a) Creo que si, que es posible que se sature el PC.
b) Una solución es que modificando TfBlat, al momento de ejecutar ::cFileBat, en él se cree un fichero 'semáforo' que será eliminado por el propio .Bat al acabar el envío. Si el ficheo existe no se puede apagar el PC, sino ...
c) Creo que puedes cerrar el sistema.
Saludos
Carlos G.
Re:
Posted: Tue May 15, 2007 12:27 am
by TecniSoftware
Gracias Carlos por tu respuesta.
La solucion del archivo de control en el .bat está muy interesante y no se me había ocurrido, estoy seguro que va funcionar 10 puntos.
Con respecto a la saturación del pc, no se... se me ocurre poner un contador y largalos de a 20 por ejemplo...
Maestro Linares, ud. que opina?
Aún quisiera saber si se puede usar el outlook express para enviar muchos mail pero ponerlos en cola y despues enviarlos todos juntos.
Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina
Posted: Tue May 15, 2007 12:33 am
by dbzap
Me sumo a la peticion pues yo uso DEFINE MAIL blablabla... y detiene el envio, lo que hace inoperante el sistema...
Alguna idea ?
Saludos
Posted: Tue May 15, 2007 6:46 am
by JoseLuis
Hola a todos
Como he explicado en varios post anteriores, yo vengo utilizando blat para el envio por correo a clientes de su factura mensual, de momento envío unos 200 que van creciendo según cada cliente vaya aceptando éste método de envío de su factura mensual.
En mi último post:
http://fivetechsoft.com/forums/viewtopi ... highlight=
también comentaba que utilizando blat he observado que de los 200 envíos, siempre hay sobre unos 10 más o menos que reciben el correo, pero no el adjunto, y ésto observándolo desde Enero.
De todas las formas, como éste hecho sigue ocurriendo, me he decantado por probar con la clase tsmtp de Luis krause, que permite enviar adjunto y admite usuario y contraseña.
He probado enviando unas 20 facturas, y de momento me ha funcionado y recibo confirmación de recepción.
La pregunta que hice a éste foro fué que si tengo que utilizar siempre para cada correo el proceso completo de envío, es decir cargar la clase entera y realizar todo el proceso completo para cada envío y nadie me contestó sobre ésta cuestión.
Me gustaría que algún maestro que esté enterado sobre éste asunto me indique si ésto es así o hubiera alguna forma de enviar los correos a cada cliente su adjunto, ya sea con blat o de otra forma
Saludos
Jose Luis
Jose Luis
Posted: Tue May 15, 2007 2:05 pm
by TecniSoftware
He leido tus post y todos los que hay aqui publicados sobre este tema, siempre lo hago y la idea es simpre aprender de los que saben y antes de preguntar, ver si otro tuvo un problema similar y como lo pudo resolver.
Carque la clase tsmtp modificada ( no recuerdo de quien era el autor ), que descargue desde el link indicado en "utilidades" en este foro, la que está adaoptada para autenticacion de servidores... la clase me funciona perfectamente pero ocurre que debo variar el tiempo de Delay por que a veces me da error y los pdf que adjunto llegan partidos por la mitad y asi no me sirve, no se como solucionarlo, por que si amplio demasiado el tiempo de espera, me imagino que va a tardar 5 años en enviar 1000 mails.
Con el Blat, funciona ok, las pruebas las hize con 3 mails distintos nada mas pero siempre llegan los mail y sus adjuntos, el aviso de respuestay todo.
Ahora voy a tratar de implementar el tema del control de cuantos mails van saliendo y cuantos se terminaron de enviar para darle un poco de aire a la pc por que me imagino que si largo 1000 de una vez, se revienta...
Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina.
Re: Jose Luis
Posted: Tue May 15, 2007 3:07 pm
by FiveWiDi
TecniSoftware wrote:
Ahora voy a tratar de implementar el tema del control de cuantos mails van saliendo y cuantos se terminaron de enviar para darle un poco de aire a la pc por que me imagino que si largo 1000 de una vez, se revienta...
Muchos saludos!
Alejandro Cebolido
Buenos Aires, Argentina.
Otra idea que se me ocurre.
Visto que la esencia de la clase TfFBlat es la ejecución de Blat mediante un fichero .Bat, creo que modificando la clase se podría conseguir que en el mismo fichero .Bat en vez de lanzar 1 sola vez a Blat.exe, lo hiciera 'x' veces según convenga.
De esta manera no cargarías el PC hasta reventar y tendrías varios envíos (no todos a la vez sino tantos como ficheros .Bat) ejecutándose a la vez.
La cosa empezaría por que el método New() recibiera el nombre de un fichero .Bat (el del envío anterior aún no enviado) y a partir de ahí ver como lo debería gestionar la clase.
Saludos
Carlos G.
Posted: Tue May 15, 2007 3:33 pm
by Verhoven
Yo lo que hago es:
1º.- Desde mi programa y vía pdfcreator creo un fichero pdf para cada factura con nombre de fichero el de la factura.
2º.- Después, desde mi programa, genero un fichero de procesamiento por lotes para usar en la línea de comados del propio Blat.EXE
3º.- Para terminar y enviar los correos electrónicos, conecto con internet y arranco el proceso por lotes.
4º.- Para confirmar que el Blat ha concluido me remito un mail con un resumen de los correos remitidos.
De esta forma no bloqueo mi programa y es el Blat el que se encarga de todo.
Saludos.
Posted: Tue May 15, 2007 8:15 pm
by JoseLuis
Entiendo que en ese proceso por lotes haces una llamada a blat para cada dirección con su correspondiente adjunto.
Haces la llamada al proceso por lotes con waitrun() desde el programa?, o mediante un bat.
Utilizando la clase a la que aludimos, genera un blat.txt con los siguientes parametros
Code: Select all
cBLAT := "BLAT BLAT.TXT " +; //Mensaje
AllTrim(::cPara) +; //Para (lista de 1 a n destinatarios)
" -s "+Chr(34)+AllTrim(::cAsunto)+Chr(34)+; //Asunto
" -r "+Chr(34)+AllTrim(::cDe)+Chr(34)+; //Solicitar aviso
IF(Len(::cAttach)>0," "+AllTrim(::cAttach),"")+; //De 0 a n adjuntos al mensaje
IF(::lSeguro,;
" -u "+AllTrim(::cUsuario)+" -pw "+AllTrim(::cClave),;
"")+; //Solo para server seguro
" -log "+Chr(34)+"Enviados.log"
y luego hace la llamada
Podrías poner un ejemplo del archivo que generas para 4 o 5 envíos?
Y abusando un poquito podrías indicarme como conectas para realizar dicho envio?
Gracias y Saludos
Jose Luis
Posted: Wed May 16, 2007 6:09 am
by Verhoven
El envío lo hago externo al programa después de haber generado el fichero de proceso por lotes.
Lo puedes hacer metiendo un acceso directo en el escritorio que se corresponda con el fichero.bat que generes.
Este es un ejemplo real(salvo por los datos de los clientes, mails y passwords inventados) fichero.bat de envío a través del BLAT.
Te he marcado de rojo tres líneas de comandos que son las mínimas que debes poner. Todo esto lo puedes deducir de la documentación que viene con BLAT.
Saludos y espero que te sea de ayuda.
REM LOTE DE FACTURAS POR MAIL DEL 31-03-07
REM Centro de Trabajo ES:009
REM ---------------------------------------------------------
REM CONFIGURACION DE BLAT.EXE (
www.blat.net)
C:\GESTION\BLAT -install smtp.correo.yahoo.es facturacion124@yahoo.esREM ---------------------------------------------------------
REM CLIENTE 10052 - Nombre de cliente
C:\GESTION\BLAT -to cgarcia@prueba.com -subject "Factura 15- -09 DEL 31-03-07" -body "Les adjuntamos la Factura 15- -09 DEL 31-03-07. Reciban un cordial saludo." -u "facturacion124" -pw "ejemplo" -attach FR15ES09D20070331.pdfREM CLIENTE 10053 - Nombre de cliente
C:\GESTION\BLAT -to
cgarcia@prueba.com -subject "Factura 16- -09 DEL 31-03-07" -body "Les adjuntamos la Factura 16- -09 DEL 31-03-07. Reciban un cordial saludo." -u "facturacion124" -pw "ejemplo" -attach FR16ES09D20070331.pdf
REM CLIENTE 10952 - Nombre de cliente
C:\GESTION\BLAT -to
isidro@prueba.es -subject "Factura 17- -09 DEL 31-03-07" -body "Les adjuntamos la Factura 17- -09 DEL 31-03-07. Reciban un cordial saludo." -u "facturacion124" -pw "ejemplo" -attach FR17ES09D20070331.pdf
REM CLIENTE 11052 - Nombre de cliente
C:\GESTION\BLAT -to
administracion@prueba.com -subject "Factura 18- -09 DEL 31-03-07" -body "Les adjuntamos la Factura 18- -09 DEL 31-03-07. Reciban un cordial saludo." -u "facturacion124" -pw "ejemplo" -attach FR18ES09D20070331.pdf
REM ---------------------------------------------------------
C:\GESTION\BLAT -to facturacion124@yahoo.es -subject "Justificante envio Remesa Facturas del 20070331 - Numero de Facturas 4" -body "Justificante envio Remesa Facturas del 20070331 - Numero de Facturas 4" -u "facturacion124" -pw "ejemplo"
Posted: Wed May 16, 2007 11:56 am
by JoseLuis
Gracias Verhoven
He construido de nuevo todo para hacerlo por proceso externo como lo haces tu.
En las pruebas que he hecho con unos cuantos va bien, así que éste mes, cuando genere las facturas las enviaré de ésta manera.
Pudiera ser que la causa de que algunos destinatarios no recibieran el adjunto fuera que se colapsara el envio mediante la clase tfblat. Quizá desde la línea de comandos no ocurra ésto.
Gracias y saludos
Jose Luis
Posted: Wed May 16, 2007 3:28 pm
by FiveWiDi
JoseLuis wrote:Gracias Verhoven
He construido de nuevo todo para hacerlo por proceso externo como lo haces tu.
En las pruebas que he hecho con unos cuantos va bien, así que éste mes, cuando genere las facturas las enviaré de ésta manera.
Pudiera ser que la causa de que algunos destinatarios no recibieran el adjunto fuera que se colapsara el envio mediante la clase tfblat. Quizá desde la línea de comandos no ocurra ésto.
Gracias y saludos
Jose Luis
En el comentario inicial de la clase escribí:
" Inconvenientes:
- Si se desea enviar una batería de emails sería conveniente (pero no obligatorio)
realizar un Inkey(1) entre mensajes para evitar que los nombres de los ficheros
coincidan."
Ello es debido a que en el Metodo Init(), los nombres de los ficheros se generan a partir de:
::PathWork() + DToS( Date() ) + StrTran( Time(), ":" )
Se me ocurre que en la clase se podría definir una variable STATIC nContador (por ejemplo) que seria utilizada en el Metodo Init() de la siguiente manera:
::PathWork() + DToS( Date() ) + StrTran( Time(), ":" ) + AllTrim(Str(++nContador, 10, 0))
evitando así la duplicidad de los nombres de los ficheros.
Saludos
Carlos G.
Posted: Thu May 17, 2007 3:45 pm
by JoseLuis
Hola amigos
He dejado las dos opciones puestas en el menú de envio de ficheros, una mediante blat, y otra mediante tsmtp.
Existe alguna diferencia apreciable entre enviar los ficheros por una via o por otra?, ya que las pruebas que realizo a los email de prueba no encuentro ninguna.
Saludos
Jose Luis