Досить часто системні адміністратори для моніторингу різних серверів або мережевих служб використовують скрипти на мові сценаріїв Visual Basic Script (vbs).

Ось і переді мною постало завдання написання скрипта для моніторингу певних подій на сервері і в разі їх настання відправки пошти на поштових ящик адміністратора.

Я вже описував кілька способів відправки пошти (відправка пошти за допомогою скрипта на PowerShell, також поштове повідомлення можна відправити прямо з командного рядка за допомогою telnet). Однак так як в поточній завдання скрипт моніторингу написаний на vbs, то і розумніше було б відправляти лист прямо з коду скрипта vbs. Як же відправити електронна пошта з vbs?

відправка email з vbs (vbscript)

У павутині інтернету знаходиться величезна кількість всіляких скриптів для відправки електронної пошти з vbs (Visual Basic Script), проте проблема в тому, що переважна більшість з них використовують програмні інтерфейси або Mapi (Outlook), або SMTP сервера. А тому ні встановлювати Outlook на сервер, ні налаштовувати служби локального SMTP сервера, в мої плани не входило, такі варіанти скриптів відправки пошти з vbscript не підходили.

На щастя, вдалося знайти нормальний скрипт відправки електронна пошта з vbs, Який не вимагає установки чого б то не було на сервер:

Function sendMail()
strSmtpServer="msg-01" ' имя почтового сервера, в моем случае это Exchange
strSmtpPort=25
strSmtpAuth="no"
strSmtpSsl="no"
strDate=date
strSendingEmail="server1@winitpro.ru" ' Имя отправителя
strReportEmail="admin@winitpro.ru" ' Имя получателя
'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/configuration/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

Leave a Reply

Your email address will not be published. Required fields are marked *