Blat se instala en Xailer
Diciembre 6th, 2006
Blat es una buena herramienta para el envío y recepción de correos electrónicos. El hecho de utilizar la DLL en vez de el ejecutable viene por el problema de los cortafuegos. Si un usuario, por primera vez, va a enviar correos desde nuestra aplicación hará saltar el cortafuegos con un mensaje parecido a este ‘La aplicación Blat.exe está intentando acceder…….’ Ante lo cual, muchos usuarios que desconocen que es Blat, denegarán el acceso. Sin embargo si aparece el nombre de nuestra aplicación puede que sea más fácil para el usuario acceder a dar paso a internet a nuestra aplicación.
Para utilizar Blat hay que descargárselo desde www.blat.net y acceder al sitio de descargas o directamente aquí (sitio de sourceforge). En ambos casos debemos de colocar la DLL (blat.dll) junto al ejecutable. Desde aquí podéis descargaros un proyecto Xailer que contiene la clase tBlat y un ejemplo. La clase en sí es muy básica, pero contiene todo lo necesario para ‘atacar’ a la dll. Si haceis pruebas me gustaría que me enviéis un correo a jose.luis (arroba) capelsoft.com con el asunto ‘Prueba Blat’ para ver que tal os va. Para cualquier duda o aclaración me teneis aquí o en news.xailer.com en el foro xailer.spanish. Por cierto… agradezco la ayuda de la lista de correos de Blat: gracias!
Entrada clasificada en: Técnico

12 Comentarios
1. Ingo | Diciembre 6th, 2006 at 3:12 pm
Error in form1.prg line 55
:nSMTPserver_port := VAL(::oServerPort:Value)
correct it to:
:nSMTPserver_port := ::oServerPort:Value
2. José Luis | Diciembre 6th, 2006 at 5:32 pm
Ingo,
Thanks, Fixed!!
Next step can be execute ’send’ function into a windows thread… I’ll investigate.
Regards
3. Jose A. Suarez | Diciembre 7th, 2006 at 7:52 am
Jose Luis,
Me larga esto al compilar:
Error: ‘C:\XAILER11\BLAT\BLAT261\FULL\BLAT.LIB’ contains invalid OMF record, type 0×21 (possibly COFF)
0 Warnings, 1 Errors
4. Jose A. Suarez | Diciembre 7th, 2006 at 7:53 am
Jose Luis,
Aunque el dir. sea Xailer11, estoy usando Xailer 12a.
5. José Luis | Diciembre 7th, 2006 at 8:19 am
José Alfonso,
Se ve que no es mi día. El error te ocurre por que si utilizas Blat.lib que viene con Blat no sirve por que está preparada por el compilador de MS.
El caso es que ayer volví a subir el proyecto por una corrección en el mismo y se me olvidó volver a marcar el ‘check’ de incluir libs. Prueba a bajarte ahora el proyecto o a crearte tu propia librería de importación: \bcc55\bin\implib blat.lib blat.dll
Saludos!
6. Jose A. Suarez | Diciembre 7th, 2006 at 8:53 am
Ok.
Gracias.
7. José Ramón Castro | Diciembre 7th, 2006 at 9:45 pm
Hola José Luis.
Bueno he probado el envio de mensajes con el Blat, y no se porque a mi personalmente me envia uno cada 100 veces que pulso enviar, la configuración está bien pero el mayor numero de veces me dice Problemas con el revidor SMTP.
Varias preguntas.
¿Hay que registrar la DLL?
¿Tiene que estar el EXE en el System2?
Saludos.
8. José Luis | Diciembre 8th, 2006 at 7:37 am
José Ramón,
A mi no me está ocurriendo ese problema. No obstante, haciendo click en el botón de enviar (en el ejemplo) veo que se hace lento el envío sucesivo de correos. Esto se debe a que, tal y como está hecho el ejemplo, cada vez que se envía el correo se carga la librería. Esto es válido para un ejemplo. Pero en una aplicación real, la inicialización de la clase se puede hacer perfectamente al inicio del programa y descargándola al final. Con ello se consigue que el envío del correo tarde lo justo y necesario.
Respecto al problema que te da… no sabría decirte muy bien que puede ser. Yo he probado con mis diferentes cuentas: capelsoft. terra y capelblog sin mayor problema. Me consta que alguien más ha comentado el mismo incidente. Creo llegar a la conclusión de que posiblemente su servidor de correos esté poniendo pegas por algún problema de ’spam’. Esto lo digo por que a lo mejor no estamos ‘componiendo’ la cabecera del correo de forma totalmente correcta (eh el ejemplo no me he preocupado mucho de revisar tooooda la sintaxis de Blat).
En fin… a vueltas del puente retomaré el tema.
Saludos
9. José Luis | Diciembre 8th, 2006 at 7:40 am
José Ramón,
Se me olvidaban tus preguntas
A. No hay que registrar nada. La dll la tienes que poner junto al ejecutable o en la carpeta que Windows busca por defecto las DLL.
B. Si te refieres a Blat.EXe no. De hecho, ese ejecutable no lo necesitamos para nada.
Saludos
10. José Ramón Castro | Diciembre 8th, 2006 at 11:03 am
José Luis:
Gracías por tus respuestas, voy seguir haciendo pruebas.
Saludos.
11. Jose A. Suarez | Enero 12th, 2007 at 10:45 pm
José Luis,
Despues de mucho pelear con esto he conseguido que me envíe los mensajes correctamente. Si había espacion en el asunto o en el cuerpo del mensaje daba errores con el servidor SMTP, aunque no tenia nada que ver.
Ahora tambien genera un log de los envíos realizados (blat.log).
Este es el método SendMail() reescrito:
METHOD SendMail() CLASS xBlat
LOCAL cSend
LOCAL nResult
MemoWrit( “tpmblat.txt”, ::cEmail_body )
cSend := “tpmblat.txt”
cSend += ” -to ” + ::cEmail_to + ” ”
IF !EMPTY( ::cEmail_Files)
cSend += “-tf ” + ::cEmail_Files + ” ”
ENDIF
IF !EMPTY( ::cEmail_ccto)
cSend += “-cc ” + ::cEmail_ccto + ” ”
ENDIF
IF !EMPTY( ::cEmail_ccFiles)
cSend += “-cf ” + ::cEmail_ccFiles + ” ”
ENDIF
IF !EMPTY( ::cEmail_subject)
cSend += “-subject ” + chr( 34 ) + ::cEmail_subject + chr( 34 ) + ” ”
ELSE
cSend += “-ss ”
ENDIF
IF ::lSMTPserver_lauth
cSend += “-u ” + ::cSMTPserver_user + ” ”
cSend += “-pw ” + ::cSMTPserver_password + ” ”
ENDIF
cSend += ” -log blat.log”
nResult := ::Blat_Send( cSend )
RETURN nResult
Saludos
Jose A. Suarez
12. José Luis | Enero 13th, 2007 at 8:45 am
José Alfonso,
Gracias!!
Este fin de semana actualizo la clase.
Saludos!
José Luis Capel