Página 1 de 1

mandar un email automatico

Publicado: 12 Ene 2014, 16:58
por mikeeps2
hola amigos , se podra o exitira algun script que se pueda mandar un mensaje automaticamente usando autoit osea , tener una direccion y un mensaje ya determinado dentro del script , y que solo al ejecutar el script se mande el mensaje deseado

por ejemplo , que cada ves que ejecute el script se mande a un correo determinado (siempre el mismo) el mensaje (siempre el mismo)

lo que trato es que tengo un sensor de moviento en casa , y lo tengo setiado en la pc , me gustaria agregarle a esto que cuando exita algun moviento que registre este sensor , se ejecute un script y me mande un email ... no se si me entiendan y la idea es ejecutable

muchas gracias

Re: mandar un email automatico

Publicado: 12 Ene 2014, 17:56
por mikeeps2
ya encontre un script en el forum de ingles , y trabaja perfecto , lo estoy provando con gmail , la idea es que cuando no este en casa , y alguien entre o pase por delante del sensor de movimiento , me mande un mensaje al celular

Código: Seleccionar todo

;
;##################################
; Include
;##################################
#Include<file.au3>
;##################################
; Variables
;##################################
$SmtpServer = "MailServer"              ; address for the smtp-server to use - REQUIRED
$FromName = "Name"                      ; name from who the email was sent
$FromAddress = "[email protected]" ; address from where the mail should come
$ToAddress = "[email protected]"   ; destination address of the email - REQUIRED
$Subject = "Userinfo"                   ; subject from the email - can be anything you want it to be
$Body = ""                              ; the messagebody from the mail - can be left blank but then you get a blank mail
$AttachFiles = ""                       ; the file(s) you want to attach seperated with a ; (Semicolon) - leave blank if not needed
$CcAddress = "[email protected]"       ; address for cc - leave blank if not needed
$BccAddress = "[email protected]"     ; address for bcc - leave blank if not needed
$Importance = "Normal"                  ; Send message priority: "High", "Normal", "Low"
$Username = "******"                    ; username for the account used from where the mail gets sent - REQUIRED
$Password = "********"                  ; password for the account used from where the mail gets sent - REQUIRED
$IPPort = 25                            ; port used for sending the mail
$ssl = 0                                ; enables/disables secure socket layer sending - put to 1 if using httpS
;~ $IPPort=465                          ; GMAIL port used for sending the mail
;~ $ssl=1                               ; GMAILenables/disables secure socket layer sending - put to 1 if using httpS

;##################################
; Script
;##################################
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl)
If @error Then
    MsgBox(0, "Error sending message", "Error code:" & @error & "  Description:" & $rc)
EndIf
;
; The UDF
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
    Local $objEmail = ObjCreate("CDO.Message")
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    Local $i_Error = 0
    Local $i_Error_desciption = ""
    If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    $objEmail.Subject = $s_Subject
    If StringInStr($as_Body, "<") And StringInStr($as_Body, ">") Then
        $objEmail.HTMLBody = $as_Body
    Else
        $objEmail.Textbody = $as_Body & @CRLF
    EndIf
    If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
;~          ConsoleWrite('@@ Debug : $S_Files2Attach[$x] = ' & $S_Files2Attach[$x] & @LF & '>Error code: ' & @error & @LF) ;### Debug Console
            If FileExists($S_Files2Attach[$x]) Then
                ConsoleWrite('+> File attachment added: ' & $S_Files2Attach[$x] & @LF)
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                ConsoleWrite('!> File not found to attach: ' & $S_Files2Attach[$x] & @LF)
                SetError(1)
                Return 0
            EndIf
        Next
    EndIf
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
    If Number($IPPort) = 0 then $IPPort = 25
    $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
    ;Authenticated SMTP
    If $s_Username <> "" Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
    EndIf
    If $ssl Then
        $objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
    ;Update settings
    $objEmail.Configuration.Fields.Update
    ; Set Email Importance
    Switch $s_Importance
        Case "High"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "High"
        Case "Normal"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Normal"
        Case "Low"
            $objEmail.Fields.Item ("urn:schemas:mailheader:Importance") = "Low"
    EndSwitch
    $objEmail.Fields.Update
    ; Sent the Message
    $objEmail.Send
    If @error Then
        SetError(2)
        Return $oMyRet[1]
    EndIf
    $objEmail=""
EndFunc   ;==>_INetSmtpMailCom
;
;
; Com Error Handler
Func MyErrFunc()
    $HexNumber = Hex($oMyError.number, 8)
    $oMyRet[0] = $HexNumber
    $oMyRet[1] = StringStripWS($oMyError.description, 3)
    ConsoleWrite("### COM Error !  Number: " & $HexNumber & "   ScriptLine: " & $oMyError.scriptline & "   Description:" & $oMyRet[1] & @LF)
    SetError(1); something to check for when this function returns
    Return
EndFunc   ;==>MyErrFunc

Re: mandar un email automatico

Publicado: 12 Ene 2014, 18:52
por mikeeps2
bueno ahora me surgio otro imconiente , me gustaria haveces desactivar el script y activarlo cuando yo quiera , como se podra hacer eso , especie de un script que cuando lo ejectue me active el script del sensor , y cuando no lo desee que me trabaje , ejecutar otro script para que me lo desactive , por ejemplo cuando estoy en casa , para poder desactivarlo , sino me estara mandando mensajes cada ves que este en casa tambien

Re: mandar un email automatico

Publicado: 15 Ene 2014, 00:25
por BasicOs
Hola Mike,
Felicidades por Script para la automatización de la vigilancia,
Si puedes publicarlo así vemos el código..
Seguramente lo más rápido es asignar teclas con HotkeySet(), una tecla para que se pare indefinidamente, y la otra para que vuelva al bucle, por ejemplo cambiando el valor a una variable global, $activado=1

Salu22:)

Re: mandar un email automatico

Publicado: 17 Ene 2014, 01:35
por mikeeps2
basicos me podrias mostrar algun exemplo a ver si entiendo lo que me tratas de decir

Re: mandar un email automatico

Publicado: 17 Ene 2014, 16:02
por arkcrew
Buenas,

Mira los hotkeys en la ayuda de autoit, vienen bastante bien explicados (en ingles) con sus respectivos ejemplos, no tiene pérdida. Resumiendo mucho un hotkey es un atajo, asocias una tecla para que cuando se pulse se ejecute una función, en tu caso iniciar/parar tu servicio.

Mira la ayuda y verás que es sencillo.

EDITO:

A lo que se Refiere BasicOs con lo de la variable, es que en un ciclo del tipo: while ($var) wend , $var es la variable que cambias desde el hotkey, es decir, cuando pulsas f1 la variable vale true, por lo que entra el ciclo, si pulsas el f2 por así decir, cambiaria $var a false y saldría del bucle. En el f1 deberías decir también que se inicie la función, ya que cuando paras esta y se cierra el bucle, por más que cambies la variable, el bucle no va a funcionar. Espero haberme explicado

Saludos!