1

Тема: VBS: CDO не получается отправить сообщение

Добрый день! С VBS знаком примерно неделю поэтому прошу сильно не ругать, если что не так.
Появилась необходимость написать скрипт который бы запускался через планировщик и пинговал заданные IP адреса. Если какой-то из хостов не овечает - отправляется на заданную почту сообщение, что такое событие имеет место быть.
Первая часть, работает правильно (делал проверку).
Вторая часть, которая по сути просто отправляет сообщение не работает,никак не могу понять почему. Почта находится на удаленном хостинге.
Сам код:


strComputer = "."
dim msg
Set objWMIService = GetObject(_ 
    "winmgmts:\\" & strComputer & "\root\cimv2")

'Определение целевых IP-адресов
arrTargets = Array("192.168.1.100", "192.168.1.101", "192.168.1.102", "192.168.1.103", "192.168.1.104", "192.168.1.105")

'проверка каждого на доступность
For each IP in arrTargets
    Set colPings = objWMIService.ExecQuery("Select * From Win32_PingStatus where Address = '" + IP + "'")
    For Each objStatus in colPings
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then 
            msg = msg &IP &vbcrlf
        End if
    Next
Next

'send massage
strMessage = "Неполадки в работе оборудования" & time & date &vbcrlf &msg
strTo= "mail1@domain.spb.ru"
strFrom="mail2@domain.spb.ru"
strSubject="Some error"
strAccountID="user_13"
strPassword="password"
strSMTPServer="smtp.hoster.ru"
SendMail strTo,strFrom,strSubject,strMessage,strAccountID,strPassword,strSMTPServer

'SendMassageFunction
Function SendMail( From, SendTo, Subject, Message , User, Password, SMTPServer )

    Set oEmail = CreateObject("CDO.Message")
    
    'configure message
    With oEmail.Configuration.Fields
          .item("....schemas.microsoft.com/cdo/configuration/sendusing") = 2 
          .item("....schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
      .item("....schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
          .item("....schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'basic
          .item("....schemas.microsoft.com/cdo/configuration/sendusername") = User
          .item("....schemas.microsoft.com/cdo/configuration/sendpassword") = Password
      .item("....schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
          .Update
    End With
    
    ' build message
    With oEmail
         .From = From
         .To = SendTo 
         .Subject = Subject
         .TextBody = Message
    End With
    
    ' send message
    On Error Resume Next
    oEmail.Send
    If Err Then
         WScript.Echo "SendMail Failed:" & Err.Description
         WScript.Quit
    End If
End Function

2

Re: VBS: CDO не получается отправить сообщение

В блоке

'configure message

убрал http:// из-за ограничения на количество ссылок.

3

Re: VBS: CDO не получается отправить сообщение

Какая ошибка?

4

Re: VBS: CDO не получается отправить сообщение

самое прикольной что никакой... Поэтому и написал...
ПРобовал ставить в разные места проверочные сообщения чтобы выдавались сообщения выдаются, писем нет...

5

Re: VBS: CDO не получается отправить сообщение

А если убрать «On Error Resume Next»?

6 (изменено: robin777, 2014-08-01 16:04:55)

Re: VBS: CDO не получается отправить сообщение

Если его закоментить то никакой ошибки не выходит, это я пробовал сразу делать...

7

Re: VBS: CDO не получается отправить сообщение

Тогда почему Вы считаете, что вторая часть не работает?

8

Re: VBS: CDO не получается отправить сообщение

Потому что сообщения на почту не приходят, а почему я понять не могу ((((

9

Re: VBS: CDO не получается отправить сообщение

В спаме нету? А если попробовать другой почтовый ящик — на стороннем, по отношению к текущему, ресурсе?

10

Re: VBS: CDO не получается отправить сообщение

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

11

Re: VBS: CDO не получается отправить сообщение

сейчас попробую другой ящик использовать...

Не просто другой ящик, но обязательно на другом ресурсе!

12

Re: VBS: CDO не получается отправить сообщение

ОТправка с mail на mail прокатила.Правда там надо включить поддержку SLL и 465 порт соответственно.
И текст вместо русского языка набор симовлов.
Будем думать что с хостером не так, видимо он что-то блокирует.

13

Re: VBS: CDO не получается отправить сообщение

Проще всего задать вопрос прямо в техподдержку.

14

Re: VBS: CDO не получается отправить сообщение

Отправка почты через smtp.gmail.com выдает ошибку "Отклик сервера: not avaiable". Кто-то с этим сталкивался?

http://i.piccy.info/i9/05d0e0cf265ec9726ee6fd9e7fd3e9bd/1462635632/8074/967953/vbs_sendmail_error.png

15

Re: VBS: CDO не получается отправить сообщение

Alaska
Картинки не видно. Загрузите на другой хостинг.
Если сервер указан правильно, пробуйте порт 465 вместо 25.

16 (изменено: BeS Yara, 2016-05-10 19:13:17)

Re: VBS: CDO не получается отправить сообщение

Alaska
Во-первых, нет кода.
Во-вторых, гуглинг говорит что "error 0x80040217 : Server not available", т.е. проверьте адрес сервера/порт(как и предложил Flasher).
В-третьих, гмейл работает только с шифрованием(есть исключения, но скорее всего не для бесплатных учёток), поэтому используйте 465-ый порт, но не забудьте включить использование SSL:

Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true

25 порт доступен(как минимум в бизнес аккаунтах), правда с рядом оговорок и ограничений - Настройки SMTP для отправки почты через Google Apps с принтера, сканера или из приложения). Если есть возможность, лучше настроить с использованием штатных настроек, а не приведённых по ссылке. Предложенные в статье по ссылке варианты это своего рода костыли, например для копиров Кэнон(не всегда инженерное меню помогает, тогда приходится использовать предложенные в статье варианты).

P.S. В соседней теме(кстати, кроспостинг это плохо) вы написали:

Alaska пишет:

Доступ к недоверенным приложениям включил. Или как оно там называется, не знаю. Вобщем то, что на этой странице.

На приложенном скриншоте показано что "Access for less secure apps" у вас отключен. В этом режиме глейл часто блокирует работу не только скриптов, но и почтовых клиентов которые он считает устаревшими и небезопасными(Как разрешить ненадежным приложениям доступ к аккаунту). Правда тогда другой код ошибки возвращается. Плюс в учётке появляется письмо с темой вроде "Sign-in attempt prevented" с уведомлением о заблокированной попытке входа.