Vector101
15-03-2013, 10:15
Есть код. Украденный с кого то форума. Я честно пытался разобраться несколько дней, но ничего не вышло, он не работает даже в оригинальной версии.
Суть такова: скрипт должен проверять последние изменение в файле (дату или время) сопоставлять с текущем временем и если это время на 20 часов или 1 день меньше настоящего, то отправлять сообщение по внешней почте, в моем случае маил.
Dim objFSO, objFile, strFilePath, lngDifference
strFilePath = "с:\text.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.fileexists(strFilePath)
Then ExitScript()
Set objFile = objFSO.getfile(strFilePath)
lngDifference = DateDiff("h", objFile.DateLastModified, Now)
If CLng(lngDifference) < 20 Then
MsgBox "разница: " & lngDifference, ,"не посылать письмо"
ExitScript()
Else MsgBox "разница: " & lngDifference, ,"послать письмо"
'SendMail()
ExitScript()
End If Sub
ExitScript()
MsgBox "выход"
Set objFile = Nothing
Set objFSO = Nothing
Wscript.quit
End Sub
Sub SendMail()
Const cdoSendUsingPickup = 1
Set objMessage = CreateObject("CDO.Message")
objMessage.emailFrom = "******@mail.ru"
objMessage.Subject = "тема"
objMessage.From = emailFrom
objMessage.To = "***@al.ru"
objMessage.TextBody = "текст"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = emailFrom objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******"
objMessage.Configuration.Fields.Update
objMessage.Send
End Sub
А теперь о проблемах, их 2 (условно разделим скрип на проверить и отправить письмо)
1. Чего я вообще понять не могу это с письмом, оно отправляться вообще не хочет, даже когда отдельным скриптом пишу, может быть дело в mail.ru?
2. Как видно из кода, сначала проверяем разницу (всплывает окно), потом отправляем или нет (всплывает окно), так вот проверка работает отлично, но второе окно не всплывает, вместо него вылетает пустое с надписью "выход".
Суть такова: скрипт должен проверять последние изменение в файле (дату или время) сопоставлять с текущем временем и если это время на 20 часов или 1 день меньше настоящего, то отправлять сообщение по внешней почте, в моем случае маил.
Dim objFSO, objFile, strFilePath, lngDifference
strFilePath = "с:\text.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.fileexists(strFilePath)
Then ExitScript()
Set objFile = objFSO.getfile(strFilePath)
lngDifference = DateDiff("h", objFile.DateLastModified, Now)
If CLng(lngDifference) < 20 Then
MsgBox "разница: " & lngDifference, ,"не посылать письмо"
ExitScript()
Else MsgBox "разница: " & lngDifference, ,"послать письмо"
'SendMail()
ExitScript()
End If Sub
ExitScript()
MsgBox "выход"
Set objFile = Nothing
Set objFSO = Nothing
Wscript.quit
End Sub
Sub SendMail()
Const cdoSendUsingPickup = 1
Set objMessage = CreateObject("CDO.Message")
objMessage.emailFrom = "******@mail.ru"
objMessage.Subject = "тема"
objMessage.From = emailFrom
objMessage.To = "***@al.ru"
objMessage.TextBody = "текст"
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru" objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = emailFrom objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******"
objMessage.Configuration.Fields.Update
objMessage.Send
End Sub
А теперь о проблемах, их 2 (условно разделим скрип на проверить и отправить письмо)
1. Чего я вообще понять не могу это с письмом, оно отправляться вообще не хочет, даже когда отдельным скриптом пишу, может быть дело в mail.ru?
2. Как видно из кода, сначала проверяем разницу (всплывает окно), потом отправляем или нет (всплывает окно), так вот проверка работает отлично, но второе окно не всплывает, вместо него вылетает пустое с надписью "выход".