Blat es una biblioteca OpenSource y una utilidad para la linea de comandos de Windows la cual permite enviar correo electrónico. Para usar blat es necesario tener acceso a un servidor SMTP vía TCP/IP.
El paquete que se distribuye en sourceforge contiene 2 carpetas: docs y full. Dentro de docs se encuentra la documentación y el historial de las versiones. Dentro de full se tienen los archivos:
- blat.dll - Biblioteca de enlace dinámico, para usar blat desde C o C++.
- blat.exe - Programa para linea de comandos para envío de correo electrónico.
- blat.lib - Biblioteca estática, para enlazar a la dinámica.
- blatdll.h - Archivo cabecera para incluir en los proyectos de C o C++.
Usando blat
Para utilizar blat debemos ubicarnos usando la consola en el directorio donde esta el archivo blat.exe, o bien, por comodidad, debemos copiar el archivo blat.exe a alguna carpeta listada en el PATH (C:/Windows/System32 por conveniencia). Una vez hecha cualquiera de las opciones anteriores podremos acceder al programa desde la consola usando el comando:
blat "parametros"
La lista completa de parámetros que podemos emplear viene en el archivo docs/syntax.txt o se puede consultar en linea.
Para que quede claro veamos un ejemplo, usando el correo: manuel@empresa.com usaríamos los siguientes datos:
- Dominio: empresa.com
- Servidor: smtp.empresa.com
- Puerto: 225 (Puede cambiar)
- Cuenta: manuel@empresa.com
- Usuario: manuel (En ocasiones el usuario es el correo completo manuel@empresa.com)
- Pasword: password
Por lo que ejecutaríamos desde linea de comandos:
blat -q -f manuel@empresa.com -server smtp.empresa.com -u manuel -pu password -subject "Correo de Prueba" -body "Este es una prueba de envio de correo"
Perfiles Blat.
Una opción que puede resultar útil (para reducir el tamaño del comando) es la de los perfiles. Un perfil nos permite usar el programa blat configurando uno o mas correos para el envío. Para usar esta opción es necesario copiar el archivo blat.exe a alguna carpeta listada en el PATH (C:/Windows/System32 por conveniencia). Para crear un perfil utilizamos el comando:
blat -install smtp.empresa.com manuel@empresa.com 3 225 - manuel password
Donde los parámetros en negrita indican:
- El numero de intentos de envío (por default 1)
- El puerto (por default 25)
- El indice del perfil (en este caso se indica con el '-' que se usara el numero de perfiles por default: 1).
Una vez configurado el perfil podemos enviar correos usando el siguiente comando:
blat correo.txt -t destinatario@dominio.com -s "Hola"
En esta ocasión emplee correo.txt en lugar de -body "Contenido del mensaje". De esta forma se envía como cuerpo del mensaje el contenido del archivo de texto, esto es muy útil si lo que se desea enviar es contenido HTML o algún texto que incluye comillas (ya que estas "truncan" el comando, produciendo errores en el envío). El parámetro -t indica el destinatario y -s es el asunto del mensaje enviado.
Otros parámetros para tener en cuenta.
Blat incluye un modo debug, el cual permite conocer el status del envío, de este modo en caso de haber algún error en el envío podremos corregirlo.
blat correo.txt -t destinatario@dominio.com -s "Hola" -debug
Podemos almacenar en un archivo de texto (log) la información de los envíos.
blat correo.txt -t destinatario@dominio.com -s "Hola" -log logfile.log
Para enviar archivos adjuntos empleamos el parámetro -attach seguido del o los archivos adjuntos, separados por comas:
blat correo.txt -t destinatario@dominio.com -s "Hola" -attach "file.txt,f2.txt"
Por ultimo añadiendo el parámetro -q suprimimos cualquier salida de texto en la consola.
blat correo.txt -t destinatario@dominio.com -s "Hola" -q
Este seria una explicación muy básica del blat, la cual es una herramienta muy útil si se combina con scripts batch o con otros lenguajes para automatizar tareas que requieran del envío de correo electrónico. Personalmente la emplee para envío de CFD's (un par de archivos *.xml y *.pdf) en un programa de facturación digital.
Espero a alguien le sea de utilidad, para mayor información les recomiendo la lectura de la documentación.