-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Выслать на email точное время включения компа
Добрый день, мной написан небольшой скриптик, который прописан в автозапуск системы и при включении компа отправляет на заданные email письмо, подскажите как сделать чтобы это письмо отправлялось в скрытом режиме, и независимо от интерфейса. Сейчас возникают некоторые траблы, из-за того что не у всех юзеров почтовые программы идентичны.
Код:
#include <Inet.au3>
Run(@ProgramFilesDir & '\Microsoft Office\Office12\OUTLOOK.exe')
$s_MailTo="recipient@domain.com"
$s_MailSubject="Work Day"
$s_MailBody="I'm on line"
_INetMail($s_MailTo, $s_MailSubject, $s_MailBody)
sleep(2000)
ControlClick("WorkDay - Сообщение (HTML)","Отправит&ь",4256)
1. Подскажите, нельзя ли отправлять письмо с русским текстом?
2. Логично ли переписать этот код так, чтобы она просто записывала время запуска, затем отправляла письмо с указанием точного времени запуска.
|
Например, так:
читать дальше »
Код:
AutoItSetOption("MustDeclareVars", 1)
Local Const $cdoSendUsingPort = 2
Local Const $cdoBasic = 1
Local Const $sPartSchema = "http://schemas.microsoft.com/cdo/configuration/"
Local $oMessage = ObjCreate("CDO.Message")
Local $oConfiguration = ObjCreate("CDO.Configuration")
Local $sFile = "C:\Temp\Some.txt"
With $oConfiguration.Fields
.Item($sPartSchema & "sendusing") = $cdoSendUsingPort
.Item($sPartSchema & "smtpauthenticate") = $cdoBasic
.Item($sPartSchema & "smtpserver") = "smtp.mail.com"
.Item($sPartSchema & "smtpserverport") = 25
.Item($sPartSchema & "sendusername") = "login"
.Item($sPartSchema & "sendpassword") = "password"
.Update
EndWith
With $oMessage
.To = "to@mail.com"
.From = "from@mail.com"
.Subject = "Тема письма"
.Configuration = $oConfiguration
.TextBody = "Первая строка" & @CRLF & _
"Очередная строка" & @CRLF & _
"Последняя строка"
If FileExists($sFile) = 1 Then
.AddAttachment($sFile)
EndIf
.Send
EndWith
$oConfiguration = 0
$oMessage = 0
Exit(0)
Возможно, понадобится библиотека Collaboration Data Objects.
Цитата:
Цитата McLotos
2. Логично ли переписать этот код так, чтобы она просто записывала время запуска, затем отправляла письмо с указанием точного времени запуска. »
|
Вопрос не понятен.
|
Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:
Цитата:
2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе и Правилах форумов.
3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный и напишите об этом в теме.
|
Переименуйте пожалуйста тему ( Как переименовать свою тему?).
|
Ну на сколько будет логичнее, если скрипт при запуске будет просто запоминать во сколько его включили, и спустя где-то минут 5 будет отсылать письмо с точным временем запуска.
|
Лучше брать время старта из самой системы, например, посредством Wbem:
Код:
wmic.exe OS get LastBootUpTime
Делать?
P.S. Почему отсылать не сразу, а через пять минут?
|
не понял суть вопроса
Цитата:
Цитата Iska
P.S. Почему отсылать не сразу, а через пять минут? »
|
потому-что сразу винда не даст отправить, она тупо не успевает.
|
Тогда примерно так:
читать дальше »
Код:
AutoItSetOption("MustDeclareVars", 1)
Local Const $cdoSendUsingPort = 2
Local Const $cdoBasic = 1
Local Const $sPartSchema = "http://schemas.microsoft.com/cdo/configuration/"
Sleep(5 * 60 * 1000)
Local $oMessage = ObjCreate("CDO.Message")
Local $oConfiguration = ObjCreate("CDO.Configuration")
Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer(".", "root\cimv2")
Local $oSWbemObjectEx
For $oSWbemObjectEx In $oSWbemServicesEx.InstancesOf("Win32_OperatingSystem")
ExitLoop
Next
With $oConfiguration.Fields
.Item($sPartSchema & "sendusing") = $cdoSendUsingPort
.Item($sPartSchema & "smtpauthenticate") = $cdoBasic
.Item($sPartSchema & "smtpserver") = "smtp.mail.com"
.Item($sPartSchema & "smtpserverport") = 25
.Item($sPartSchema & "sendusername") = "login"
.Item($sPartSchema & "sendpassword") = "password"
.Update
EndWith
With $oMessage
.To = "to@mail.com"
.From = "from@mail.com"
.Subject = "Last bootup time: " & @ComputerName
.Configuration = $oConfiguration
.TextBody = "Last bootup time for [" & @ComputerName & "] is " & FormatWMIDateTime($oSWbemObjectEx.LastBootUpTime())
.Send
EndWith
$oSWbemObjectEx = 0
$oSWbemServicesEx = 0
$oSWbemLocator = 0
$oConfiguration = 0
$oMessage = 0
Exit(0)
Func FormatWMIDateTime($sWMIDateTime)
Return ( _
StringMid($sWMIDateTime, 7, 2) & "." & _
StringMid($sWMIDateTime, 5, 2) & "." & _
StringMid($sWMIDateTime, 1, 4) & " " & _
StringMid($sWMIDateTime, 9, 2) & ":" & _
StringMid($sWMIDateTime, 11, 2) & ":" & _
StringMid($sWMIDateTime, 13, 2) _
)
EndFunc
|
Iska, спасибо, обязательно попробую этот вариант. Вы как всегда, каждый ответ сразу в очку.
|
Время: 09:30.
© OSzone.net 2001-