3 feb 2014

Blat: envio de email desde la consola (Windows)



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ónicoPersonalmente 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. 

7 comentarios:

  1. Alguna idea de como implementar Blat en un programa c++?

    ResponderEliminar
    Respuestas
    1. Hola Mauricio, pues hay dos opciones:

      1. Primera es la mas optima e implica el uso de los 3 archivos

      blat.dll - Biblioteca de enlace dinámico, para usar blat desde C o C++.
      blat.lib - Biblioteca estática, para enlazar a la dinámica.
      blatdll.h - Archivo cabecera para incluir en los proyectos de C o C++.

      Dependiendo del IDE que estes usando debes importar la DLL y el .lib y utilizar el .h para referenciar y utilizar los metodos de la biblioteca.

      2. Hacer dentro de tu proyecto una llamada al ejecutable de la biblioteca y pasarle los parametros necesarios.

      Si me da tiempo esta semana hare un ejemplo y lo cuelgo al github.

      Saludos

      Eliminar
    2. Disculpa , también intentaba usarlo pero MinGw no acepta los ficheros .lib , tendría que convertirlos a .a para usarla y no encuentro como hacerlo

      Eliminar
    3. Que tal MauricioLealR... Has checado lib2a??

      https://code.google.com/p/lib2a/

      Eliminar
    4. Cero Y Van Dos!!: Blat: Envio De Email Desde La Consola (Windows) >>>>> Download Now

      >>>>> Download Full

      Cero Y Van Dos!!: Blat: Envio De Email Desde La Consola (Windows) >>>>> Download LINK

      >>>>> Download Now

      Cero Y Van Dos!!: Blat: Envio De Email Desde La Consola (Windows) >>>>> Download Full

      >>>>> Download LINK 9C

      Eliminar
  2. Buen día podrian ayudarme por favor
    Como enviar por correo todos los archivos *.csv que se encuentran en un directorio

    ResponderEliminar
    Respuestas
    1. un script de python como el de la liga, donde en lugar de adjuntar un archivo hagas un ciclo para adjuntar todos los archivos... quiza..

      https://gist.github.com/2624789/d42aaa12bf3a36356342

      Eliminar