Coolw Posted July 25, 2008 Share Posted July 25, 2008 Ok, here is my dilemma, I have a server checker, for a game, and i want the program to send emails, based on the status of the server. Here is the server checker: CODE#include <GUIConstants.au3> #Include <Timers.au3> ;-------------------------------------------------------------------------------- HotKeySet( "{ESC}", "_Exit") ;Escape! ;-------------------------------------------------------------------------------- $State = "Stopped" ;Is the program is monitoring the server? $msg = "" ;-------------------------------------------------------------------------------- GUICreate( "Server Watcher - By David L.", 205, 110) ;Created the GUI $Monitor = Guictrlcreatebutton( "Start Monitoring", 10, 10) $Stop = GUICtrlCreateButton( "Stop Monitoring", 110, 10) $Label = GUICtrlCreateLabel( $State, 10, 50) $SMS = GUICtrlCreateCheckbox( "Send Text Message with",10, 70) $SMS2 = GUICtrlCreateLabel("server change in status?",27, 90) Guisetstate() ;Set the GUI information ;-------------------------------------------------------------------------------- While $msg <> $GUI_EVENT_CLOSE ;Test to see if they tried to hit the X $msg = GUIGetMsg() Select Case $msg = $Monitor ;They hit the monitor button $State = "Monitoring" GUICtrlSetData( $Label, $State) Case $msg = $Stop ;They want to stop monitoring GUICtrlSetData( $Label, $State) $State = "Stopped" Case $msg = $GUI_EVENT_CLOSE ;Exited using X Exit EndSelect If $State = "Monitoring" Then ;Check to see if program should monitor GUICtrlSetData( $Label, $State) ;Change the label telling them what the program is doing $starttime = _Timer_Init() While $State = "Monitoring" ;A loop to wait until they Stop or Exit If _Timer_Diff($starttime) >= 30000 Then If WinExists( "Application Error") Then ;Check every 30 seconds to see if window exists ;_RestartServer() ;lets restart the server $inputsms=GUICtrlRead($SMS) If $inputsms = $GUI_CHECKED Then ;_SendSMS ;If enabled, send email to users phone to tell them the status EndIf EndIf $starttime = _Timer_Init() EndIf $msg = GUIGetMsg() ;GUICtrlSetData($Label, _Timer_Diff($starttime)) Select Case $msg = $Stop ;Hit stop $State = "Stopped" GUICtrlSetData( $Label, $State) Case $msg = $GUI_EVENT_CLOSE ;Exited Exit EndSelect WEnd GUICtrlSetState($Monitor, $GUI_ENABLE) EndIf WEnd ;-------------------------------------------------------------------------------- Func _Exit() Exit EndFunc and here is the email, which I know works, because I have tried it: CODE#Include<file.au3> Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc") $s_SmtpServer = "smtp.gmail.com" ; address for the smtp-server to use - REQUIRED $s_FromName = "Wut" ; name from who the email was sent $s_FromAddress = "myserver@test.com" ; address from where the mail should come $s_ToAddress = "bunkerdude103@gmail.com" ; destination address of the email - REQUIRED $s_Subject = "Test" ; subject from the email - can be anything you want it to be $as_Body = "This is a test email" ; the messagebody from the mail - can be left blank but then you get a blank mail $s_AttachFiles = "" ; the file you want to attach- leave blank if not needed $s_CcAddress = "" ; address for cc - leave blank if not needed $s_BccAddress = "" ; address for bcc - leave blank if not needed $s_Username = "bunkerdude103@gmail.com" ; username for the account used from where the mail gets sent - Optional (Needed for eg GMail) $s_Password = "***********" ; password for the account used from where the mail gets sent - Optional (Needed for eg GMail) ;$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($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl) If @error Then MsgBox(0, "Error sending message", "Error code:" & @error & " Rc:" & $rc) EndIf ; Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "",$IPPort=25, $ssl=0) $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]) If FileExists($S_Files2Attach[$x]) Then $objEmail.AddAttachment ($S_Files2Attach[$x]) Else $i_Error_desciption = $i_Error_desciption & @lf & 'File not found to attach: ' & $S_Files2Attach[$x] 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 $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 ; Sent the Message $objEmail.Send if @error then SetError(2) return $oMyRet[1] EndIf 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 I would like my program to send an email, when told to, how would I do that? My ProgramsMy WIP'sSteam Server Restarter Link to comment Share on other sites More sharing options...
Coolw Posted July 25, 2008 Author Share Posted July 25, 2008 any help? My ProgramsMy WIP'sSteam Server Restarter Link to comment Share on other sites More sharing options...
flyingboz Posted July 25, 2008 Share Posted July 25, 2008 you've got all you need. call the function you need to call with the parameters you want when the conditions you define are met. you can implement with a smtp mail function as another #include file, or just cut/paste the udf to your server script. Reading the help file before you post... Not only will it make you look smarter, it will make you smarter. Link to comment Share on other sites More sharing options...
Coolw Posted July 25, 2008 Author Share Posted July 25, 2008 you've got all you need.call the function you need to call with the parameters you want when the conditions you define are met.you can implement with a smtp mail function as another #include file, or just cut/paste the udf to your server script.ok, i got it to work, but how can i make it so i can have variables in the server .au3 file, such as variables as where to send the mail, msg, ect? My ProgramsMy WIP'sSteam Server Restarter Link to comment Share on other sites More sharing options...
flyingboz Posted July 25, 2008 Share Posted July 25, 2008 ok, i got it to work, but how can i make it so i can have variables in the server .au3 file, such as variables as where to send the mail, msg, ect?uh....define them, use them, check any example code for how to pass parameters to functions. Reading the help file before you post... Not only will it make you look smarter, it will make you smarter. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now