Досить часто системні адміністратори для моніторингу різних серверів або мережевих служб використовують скрипти на мові сценаріїв Visual Basic Script (vbs).
Ось і переді мною постало завдання написання скрипта для моніторингу певних подій на сервері і в разі їх настання відправки пошти на поштових ящик адміністратора.
Я вже описував кілька способів відправки пошти (відправка пошти за допомогою скрипта на PowerShell, також поштове повідомлення можна відправити прямо з командного рядка за допомогою telnet). Однак так як в поточній завдання скрипт моніторингу написаний на vbs, то і розумніше було б відправляти лист прямо з коду скрипта vbs. Як же відправити email з vbs?
У павутині інтернету знаходиться величезна кількість всіляких скриптів для відправки електронної пошти з vbs (Visual Basic Script), проте проблема в тому, що переважна більшість з них використовують програмні інтерфейси або Mapi (Outlook), або SMTP сервера. А тому ні встановлювати Outlook на сервер, ні налаштовувати служби локального SMTP сервера, в мої плани не входило, такі варіанти скриптів відправки пошти з vbscript не підходили.
На щастя, вдалося знайти нормальний скрипт відправки email з vbs, який не вимагає установки чого б то не було на сервер:
Function sendMail () strSmtpServer = "msg-01" 'ім'я поштового сервера, в моєму випадку це Exchange strSmtpPort = 25 strSmtpAuth = "no" strSmtpSsl = "no" strDate = date strSendingEmail = "[email protected]"' Ім'я відправника strReportEmail = "[email protected]" 'Ім'я одержувача' WScript.Echo logPath & "\ backup" & strDate & ".html" Set objMessage = CreateObject ( "CDO.Message") objMessage.Configuration.Fields.Item ( "http: //schemas.microsoft.com/cdo/configuration/sendusing ") = 2 objMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/smtpserver ") = strSmtpServer objMessage.Configuration.Fields .Item ( "http://schemas.microsoft.com/cdo/configuration/smtpserverport") = strSmtpPort If strSmtpAuth = "yes" Then objMessage.Configuration.Fields.Item ( "http://schemas.microsoft.com/cdo / configuration / smtpauthenticate ") = 1 'use' 2 'for NTLM authentication objMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/config uration / sendusername ") = strSmtpUser objMessage.Configuration.Fields.Item (" http://schemas.microsoft.com/cdo/configuration/sendpassword ") = strSmtpPass End If If strSmtpSsl =" yes "Then objMessage.Configuration.Fields. Item ( "http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True End If objMessage.Configuration.Fields.Update objMessage.Subject = "Тема листа" & strDate & "." objMessage.From = strSendingEmail objMessage.To = strReportEmail objMessage.HTMLBody = "Текст повідомлення" objMessage.Send End Function