Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Выслать на email точное время включения компа (http://forum.oszone.net/showthread.php?t=235918)

McLotos 04-06-2012 08:55 1927621

Выслать на 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. Логично ли переписать этот код так, чтобы она просто записывала время запуска, затем отправляла письмо с указанием точного времени запуска.

Iska 04-06-2012 09:51 1927634

Например, так:
читать дальше »
Код:

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. Логично ли переписать этот код так, чтобы она просто записывала время запуска, затем отправляла письмо с указанием точного времени запуска. »

Вопрос не понятен.

Creat0R 04-06-2012 16:25 1927866

Предупреждение за нарушение правил форума, пункт 2.7 и пункт 3.19:

Цитата:

2.7: В заголовке темы обязательно обозначайте название предмета, которого касается вопрос, а в теле сообщения максимально подробно опишите проблему (приведите аппаратную/программную конфигурацию, а также изложите ситуацию, в которой возникает проблема)...
Подробнее о принципах создания тем читайте в этом документе и Правилах форумов.

3.19: Запрещается... Создавать темы, имеющие неинформативные или состоящие из заглавных букв заголовки (например, "Помогите!", "HELP!", "У меня проблема"). Такие темы будут закрыты или перенесены в Тест-форум. Если вы хотите вернуть перенесенную тему обратно, пока ее не закрыли в Тест-форуме, измените ее заголовок на осмысленный и напишите об этом в теме.
Переименуйте пожалуйста тему (Как переименовать свою тему?).

McLotos 06-06-2012 16:25 1929495

Цитата:

Цитата Iska
Вопрос не понятен. »

Ну на сколько будет логичнее, если скрипт при запуске будет просто запоминать во сколько его включили, и спустя где-то минут 5 будет отсылать письмо с точным временем запуска.

Iska 06-06-2012 18:06 1929547

Лучше брать время старта из самой системы, например, посредством Wbem:
Код:

wmic.exe OS get LastBootUpTime
Делать?

P.S. Почему отсылать не сразу, а через пять минут?

McLotos 08-06-2012 07:45 1930402

Цитата:

Цитата Iska
Делать? »

не понял суть вопроса
Цитата:

Цитата Iska
P.S. Почему отсылать не сразу, а через пять минут? »

потому-что сразу винда не даст отправить, она тупо не успевает.

Iska 08-06-2012 13:58 1930608

Тогда примерно так:
читать дальше »
Код:

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


McLotos 08-06-2012 22:52 1930921

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


Время: 09:30.

Время: 09:30.
© OSzone.net 2001-