Отправка почты из 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="server1@winitpro.ru" ' Имя отправителя
strReportEmail="admin@winitpro.ru" ' Имя получателя
'WScript.Echo logPath & "\backup" & strDate & ".html"
Set objMessage = CreateObject("CDO.Message")
%MINIFYHTMLeee86c97d3f42f748db0018faa5a1bd16%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

Предыдущая статья Следующая статья


Комментариев: 12 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)