Wojen wsadowych ciąg dalszy…

Dzisiaj zachciało mi się dodać do mojego skryptu nocnych buildów aplikacji wysyłanie mailem loga z owego buildu. Czystym batchem nie udało mi się tego osiągnąć, ale na szczęście już od dość dawna pod Windowsem działa zarówno JavaScript jak i VBScript, który ma dostęp do kilku ciekawych obiektów systemowych. Jednym z takich obiektów jest CDO.Message.

Tworzymy najpierw skrypt VB, który będzie wysyłał maila za pośrednictwem GMail:

Set objMessage = CreateObject("CDO.Message")
objMessage.From = "builder@firma.pl" 
objMessage.To = WScript.Arguments.Item(0)
builtPackage = WScript.Arguments.Item(2)
objMessage.Subject = "Nightly build report for " & builtPackage
objMessage.TextBody = builtPackage & " nightly build results in attachement." 
If WScript.Arguments.Count > 3 Then objMessage.AddAttachment WScript.Arguments.Item(3) End If

schema = "http://schemas.microsoft.com/cdo/configuration/"
Set msgConf = objMessage.Configuration
msgConf.Fields.Item (schema & "sendusing") = 2
msgConf.Fields.Item (schema & "smtpserver") = "smtp.gmail.com"
msgConf.Fields.Item (schema & "smtpserverport") = 465
msgConf.Fields.Item (schema & "smtpauthenticate") = 1
msgConf.Fields.Item (schema & "sendusername") = WScript.Arguments.Item(0)
msgConf.Fields.Item (schema & "sendpassword") = WScript.Arguments.Item(1)
msgConf.Fields.Item (schema & "smtpusessl") = true
msgConf.Fields.Update

objMessage.Send()

Przyjmuje on trzy wymagane parametry i czwarty opcjonalnie. Pierwsze dwa to user i hasło do konta GMail, trzeci to tekst użyty w temacie i body. Czwarty parametr to plik, który zostanie dołączony jako załącznik do maila. Uwaga: ścieżka do pliku musi być bezwzględna.

Do swojego skryptu budującego dodałem takie cuś:

if "%MAIL_USER%" NEQ "" (
if "%MAIL_PASSWD%" NEQ "" (
sendmail.vbs %MAIL_USER% %MAIL_PASSWD% %PRODUCT_NAME%_%PRODUCT_MAJOR%.%PRODUCT_MINOR% %BUILD_LOG%
)
)

Sprawdza on, czy zdefiniowane są zmienne środowiskowe MAIL_USER i MAIL_PASSWD i jeśli tak, to wysyła maila.

🙂