La Virgen

La Virgen
Primavera en la Virgen

sábado, 5 de marzo de 2011

Enviar un correo mediante BATCH

Algo muy importante hoy en día en el terreno empresarial es el uso de paquetes de líneas de comando o archivos BATCH. Cualquiera puede buscar un manual en internet sobre cómo crear este tipo de Scripts y aprender rápidamente a usarlos. No obstante la cosa se complica cuando nos piden algo tan específico como lo que vamos a ver hoy aquí: Envío de correos.
Si nos repasamos la biblioteca de funciones de la línea de comandos al final daremos con la función mail:to. Es una función interesante cuando queremos que sea el propio usuario el encargado de componer el mensaje y enviarlo, esto es, el usuario tendrá que rellenar los datos que desee del mensaje y darle al botón enviar. Si outlook se encuentra correctamente configurado el email se enviará y habremos acabado. No obstante este es el camino fácil. Vamos a complicarlo un poco. ¿Por qué? Pues porque en esta vida las cosas nunca son tan fáciles.
Con el método anterior es necesaria la presencia del usuario para un envío correcto del correo. Pero qué pasa si nos encontramos lanzando un script batch y en algún momento se produce un error. Nos gustaría que nos avisase cuanto antes para poder subsanarlo y volver a lanzarlo. No podemos estar delante de la pantalla esperando a que este se produzca para enviar el correo (en tal caso no tendría sentido, ya que nosotros mismos veríamos el error). Por esta razón necesitamos un sistema que permita el envío automático del correo. Sin ayuda del usuario.
Vamos a ver cómo conseguirlo:
1.- En primer lugar necesitamos crear una macro en nuestro outlook que permita el envío de un correo. No hace falta pensar mucho para conseguir esto y si buscamos algo de información en internet, seguro que en seguida la encontramos. No obstante aquí os dejo el código:
Sub EnviarMail()Dim OutApp As ObjectDim OutMail As ObjectDim strbody As String‘ Inicializamos variablesSet OutApp = CreateObject(“Outlook.Application”)OutApp.Session.LogonSet OutMail = OutApp.CreateItem(0)‘ Enviamos el correoOn Error Resume NextWith OutMail.To = “a@a.com.CC = “”.BCC = “”.Subject = “¡¡Funciona!!”.Body = “Bien bien, ¿quien es tu dios ahora?”.Send.ReadReceiptRequested = TrueEnd WithOn Error GoTo 0‘ Liberación de memoriaSet OutMail = Nothing‘ Dormimos 5 segundos para que se envíe el correoSleep (5000)‘ SalimosOutApp.QuitEnd Sub
2.- Ya tenemos nuestra macro creada en outlook. Ahora es necesario llamarla de alguna manera mediante un script BATCH. Para ello utilizaremos el propio programa de outlook y la función START del prompt. Veamos cómo es esta llamada:
START “” “C:\Archivos de programa\Microsoft Office\Office12\Outlook.exe” /autorun EnviarMail
Bien, pues solucionado. Creamos un batch con esta línea (eso si, cambiando la dirección donde se encuentra outlook instalado en nuestro sistema) y lo lanzamos. Como vemos es necesario incorporar el parámetro: /autorun EnviarMail. Este parámetro indica que queremos abrir outlook lanzando la macro que hemos definido previamente.
Un saludo, ¡hasta otra!

1 comentario:

  1. Hola, excelente tutorial, disculpa y si quisiera adjuntar archivos?

    ResponderEliminar