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.
🙂