Davarious Posted January 10, 2008 Share Posted January 10, 2008 The I have used the code located at http://www.autoitscript.com/forum/index.ph...etSmtpMailCom()What I have included is what I edited out of the code, because well - as my comments say I do not want to show people our password if there is an error etc. I also edited the first line because it seemed to ignore the variables for things such as SMTP port by declaring them - so the newbie in me removed them to be safe.CODE; Commented to Avoid a msg box that could display the compiled in password of our gmail account.;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="", $ssl="")After I did that, I saved the file as SMTP-Auth.Au3 in the Autoit Include directory. I went and built the following program to install at our remote sites... (warning I comment a lot in my code! Call it newbie needing to know where he left off at the next shift...).CODE; This program will detect the IP address of the computer, and determine if it has changed since the last check.; Using the email script from http://www.autoitscript.com/forum/index.ph...etSmtpMailCom()#include <INET.au3>#include <SMTP-Auth.au3>#csThese are the original referenced comments from the creator of the INetSmtpMailCom function$s_SmtpServer = "MailServer" ; address for the smtp-server to use - REQUIRED$s_FromName = "Name" ; name from who the email was sent$s_FromAddress = "your@Email.Address.com" ; address from where the mail should come$s_ToAddress = "your@Email.Address.com" ; destination address of the email - REQUIRED$s_Subject = "Userinfo" ; subject from the email - can be anything you want it to be$as_Body = "" ; 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 = "CCadress1@test.com" ; address for cc - leave blank if not needed$s_BccAddress = "BCCadress1@test.com" ; address for bcc - leave blank if not needed$s_Username = "******" ; 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#ce; Declare some variables we need to worry about, while not needed, it makes it easier to view what is happening, and understand all the values being used.Dim $SMTPServer, $FromName, $FromAddy, $ToAddy, $Subject, $Body, $Attachment, $CCAddy, $BCCAddy, $SMTPUser, $SMTPPass, $SMTPPort, $SSL; Some things are contstant and will not change, therefor we will set them now.$SMTPServer = "*******" ; Future version will just encrypt this information in the INI file.$SMTPUser = "*******" ; Future version will just encrypt this information in the INI file.$SMTPPass = "**********" ; Future version will just encrypt this information in the INI file.$SMTPPort = 465 ; This is gmail's smtp port.$SSL = 1 ; I am using gmail and running on a remote network - therefor encryption is prefered.$FromName = "Okuma Integrated Solutions" ; Hard coded to support what is coded in the SMTP Settings.$FromAddy = "TRM@TSkinner.com" ; Hard coded to support what is coded in the SMTP Settings.$ToAddy = IniRead("IPCheck.ini","CONF", "EMAIL", "TRM@TSkinner.com") ; We default to our group mailbox, unless otherwise indicated.$CCAddy = "" ; The function asks for these, however we are not using them so they are declared blank here.$BCCAddy = "" ; The function asks for these, however we are not using them so they are declared blank here.; This leaves $Subject and $Body to be declared in the script.; We are going to declare some simple variables to check for old and new addresses.Dim $OldIP, $NewIP, $Change$OldIP = IniRead("IPCheck.ini", "IP", "ADDY", "")$NewIP = _GetIP()$Client = IniRead("IPCheck.ini", "CONF", "CLIENT", "UNKNOWN")If $NewIP = $OldIP Then IniWrite("IPCheck.ini", "IP", "DATE", @MON & "-" & @MDAY & "-" & @YEAR) $Change = 0Else IniWrite("IPCheck.ini", "IP", "ADDY", $NewIP) IniWrite("IPCheck.ini", "IP", "DATE", @MON & "-" & @MDAY & "-" & @YEAR) $Change = 1EndIfIf $Change = 0 Then ExitElseIf $Change = 1 Then $Subject = "IP Address Changed @ " & $Client & " (" & $NewIP & ")" $Body = "IP Address Changed @ " & $Client & " (" & $NewIP & ")" _INetSmtpMailCom($SMTPServer, $FromName, $FromAddy, $ToAddy, $Subject, $Body, $Attachment, $CCAddy, $BCCAddy, $SMTPUser, $SMTPPass, $SMTPPort, $SSL)EndIfThe INI File I am using looks like this:CODE[CONF]EMAIL=Blah@Blah.comCLIENT=Sample Customer[iP]ADDY=10.10.10.10DATE=01-10-2008(Date is used to let me know things are still being checked, if I ever remote in and open the file I will know when the check was last run (as this will be scheduled as a windows task)When I test it - I get an email. It works flawlessly when I double click the file - however when I use the Tools>Beta Run from SCITE, I get the following error...Keep in mind, it still sends the email. (To ensure I get an email each time, I just edit the IP in the INI file to make it different and thus the check sends me the results..CODE>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /beta /ErrorStdOut /in "C:\Users\jbattley\Desktop\IP Change Notifier.au3" /autoit3dir "C:\Program Files\AutoIt3\beta" /UserParams +>11:54:51 Starting AutoIt3Wrapper v.1.9.3>Running AU3Check (1.54.9.0) from:C:\Program Files\AutoIt3+>11:54:51 AU3Check ended.rc:0>Running:(3.2.8.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Users\jbattley\Desktop\IP Change Notifier.au3" ### COM Error ! Number: 80020009 ScriptLine: 89 Description:The transport failed to connect to the server.+>11:55:00 AutoIT3.exe ended.rc:0+>11:55:00 AutoIt3Wrapper Finished>Exit code: 0 Time: 9.732 Link to comment Share on other sites More sharing options...
DirtDBaK Posted January 10, 2008 Share Posted January 10, 2008 If you want your IP to be static not dynamic then you should sign up for www.DynDNS.com they gave me a name for my ip...its free.http://dbak.mine.nuis the same ashttp://65.31.39.43I am not sure if you want a static server or client. Could you tell me which...What I posted above is for a static server [center][/center] Link to comment Share on other sites More sharing options...
Davarious Posted January 10, 2008 Author Share Posted January 10, 2008 If you want your IP to be static not dynamic then you should sign up for www.DynDNS.com they gave me a name for my ip...its free.http://dbak.mine.nuis the same ashttp://65.31.39.43I am not sure if you want a static server or client. Could you tell me which...What I posted above is for a static serverWhile DynDNS handles the changing addresses well of a dynamic host, it does not handle the volume of clients we have without needing a paid subscription, hence why a solution such as this seems to work well for me.The script works, I just get the error I posted at the end. Between 6-9 seconds run time each time I do it is not awful considering it is relying on external services, but the error concerns me that I may get failures and not receive updates from a client. 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