Отправка почты из vbs (VBScript)

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

Вот и передо мной возникла задача написания скрипта для мониторинга определенных событий на сервере и в случае их наступления отправки почты на почтовых ящик администратора.

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

отправка email из vbs (vbscript)

В паутине интернета находится огромное количество всевозможных скриптов для отправки электронной почты из 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/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

EnglishRussianUkrainian