wildwolf007 пишет:BeS Yara
Вопрос что за подстановочные макросы ? И как определить автоматом адрес данного пользователя который создал папку ?
Не совсем точно выразился, в Cobian Backup есть некоторые переменные для подстановки в путь. В ОС они так же есть(даже больше, в кобиане переменные ОС на резолвит, а жаль). В данном случае это USERNAME и COMPUTERNAME. Полный список можно увидеть если выполнить команду SET в консоли.
Доступ к этим переменным в VBS происходит довольно просто:
Option Explicit
Dim WshShell, WshSysEnv
Set WshShell = WScript.Createobject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("Process")
wscript.echo WshSysEnv("USERNAME")
wscript.echo WshSysEnv("COMPUTERNAME")
По поводу отправки, неплохо бы увидеть код/описание ошибки. В приведённом коде, авторизация отсутствует, а вы пишете что авторизация используется на уровне домена. Скорее всего в этом и проблема. Нужно или указать в явном виде логин-пароль(что не получится сделать автоматически), или попробовать использовать авторизацию доменную:
Настройка режима аутентификации производится при помощи того же объекта CDO.Configuration:
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Значение 1 означает, что используется базовая аутентификация, значение 0 – без аутентификации (анонимно), значение 2 – аутентификация NTLM.
Скрипт работает в локалке - стоит проверить что имя сервера нормально резолвится.
Так как скрипт затачивается под конкретные условия, не вижу смысла в IF-ах и лишних переменных. Так что его можно сократить:
Function sendMail()
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") = "msg-01"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2 'use '2' for NTLM authentication
objMessage.Configuration.Fields.Update
objMessage.Subject = "Тема письма" & strDate & "."
objMessage.From = strSendingEmail
objMessage.To = strReportEmail
objMessage.BodyPart.Charset = "windows-1251"
objMessage.TextBody = "Текст сообщения"
objMessage.Send
End Function
При работе с Exchange могут быть свои тонкости, как минимум среди методов отправки (CdoSendUsing Enum) есть такой вариант как cdoSendUsingExchange. Но во взаимодействии с Exchange помочь врядли смоге - не на чем тестировать.
По поводу кодировок и тела - с Бэтом у меня при отправке текстовых сообщений точно не было, про аутлук не помню, а вот на мобильных клиентах указание кодировки почему-то игнорировалось(давно было, может уже не актуально). Но если планируете использовать именно HTMLBody, тогда нужно ео формировать по полной - иненно в HTML и с указанием кодировки в заголовке. BodyPart.Charset тогда не нужен. Пример работы с HTML телом есть в этой теме. Как раз из-за необходимости читать сообщения на смартфоне и пришлось задействовать хтмл.
Если не удастся заставить работать с доменной авторизацией, есть ещё один костыль. Не знаю как в Exchange, но в sendmail можно разрешить отправку без авторизации на внутренние адреса. Тогда можно будет сделать пользователя для такой отправки(всё равно в скрипте указан какой-то сервисный емейл), и не указывать пароль в тексте HTA. Правда если найдётся продвинутый пользователь, может начать хулиганить .
Ну и третий вариант. Так как HTA-шка всё равно взаимодействует с пользователем, можно попробовать использовать непосредственно офисный аутлук - вызывать создание письма, указывать адресата, тему и текст. А кнопку "отправить" пусть пользователь нажмёт сам . Но при таком режиме работы аутлук скорее всего будет поругиваться на попытки программного взаимодействия с собой извне, и пользователям придётся разрешать "подозрительное действие".