Отправка почты из vbs (VBScript) | Windows для системных администраторов

Отправка почты из 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")
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
Еще записи по теме: Exchange
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 10

Оставить комментарий
  1. Aleksandr | 16.11.2011

    Прекрасно, помогло, даже немножко подкорректировал скрипт и сделал что-то на подобии Email Sender Delux, позже выложу на своем сайте, обязательно буду ссылаться на Вас. сайт a d m i n — v e s t n i k . r u

    Ответить
  2. Veronika | 05.03.2013

    Спасибо, отличный скрипт!
    Подскажите, пожалуйта, как прикрепить вложение

    Ответить
    • itpro | 06.03.2013

      Попробуйте:
      objMessage.HTMLBody = strHTML
      objMessage.AddAttachment(«file://C:\Test\test.txt»)

      Ответить
  3. Veronika | 06.03.2013

    Да,все получилось,спасибо!

    Ответить
  4. Александр | 14.05.2013

    Очень полезный скрипт.
    А что значит & strDate & в заголовке письма? И как можно указать дату в заголовке?

    Ответить
    • itpro | 14.05.2013

      Пропущен назначение текущей даты переменной strDate.
      Скрипт поправлен (strDate=date), теперь в теме письма будет содержатся дата.

      Ответить
  5. Pers2012 | 18.06.2013

    К сожалению, не отправляет почту, но и ошибку не выдает…

    Ответить
    • itpro | 18.06.2013

      Проверьте, что почтовый сервер доступен с машины, на которой выполняется скрипт, по 25 порту

      Ответить
  6. Pers2012 | 19.06.2013

    Прошу прощение… Подскажите, как это сделать.
    Спасибо.

    Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

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

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