Sign in to follow this  
Followers 0
Shyke

Report Errors

11 posts in this topic

I'm looking for a way to have my software report errors to me on the AutoIt.Error event. My idea was FTP or email. I believe the most efficient way to have it done would be email but I don't know of a way to dynamically retrieve a SMTP server and using AutoIt to login to FTP or email wouldn't be very secure.

Does anyone have any idea what the most efficient way to do this and how to do it?

$oError = ObjEvent("AutoIt.Error", "_ReportError")

Func _ReportError()
    $sReportErrorMessage = "Error Number: " & $oError.number & @CRLF
    $sReportErrorMessage &= "Description: " & StringStripWS($oError.description, 2) & @CRLF
    $sReportErrorMessage &= "WinDescription: " & StringStripWS($oError.Windescription, 2) & @CRLF
    $sReportErrorMessage &= "Error Source: " & $oError.source
    
    $iReportErrorQuestion = MsgBox(52, "", "An error has occured!" & @CRLF & @CRLF & "Would you like an error report to be sent?")
    If $iReportErrorQuestion = 6 Then
        ; CODE TO SEND ERROR HERE! YOUR HELP IS NEEDED!!
    EndIf       
EndFunc

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Let Me think about this... It is defiantly possible using email. I'll work out something, and get back to you <_<

Maybe Something like?

#include <GUIConstants.au3>
#Include <Date.au3>
#include <INet.au3>

$oError = ObjEvent("AutoIt.Error", "_ReportError")
_ReportError()
Func _ReportError()
    $sReportErrorMessage = "Error Number: " & $oError.number & @CRLF
    $sReportErrorMessage &= "Description: " & StringStripWS($oError.description, 2) & @CRLF
    $sReportErrorMessage &= "WinDescription: " & StringStripWS($oError.Windescription, 2) & @CRLF
    $sReportErrorMessage &= "Error Source: " & $oError.source & @CRLF
    $sReportErrorMessage &= "Computer Name: " & @ComputerName & @CRLF
    $sReportErrorMessage &= "Working Dir: " & @WorkingDir & @CRLF
    $sReportErrorMessage &= "Username: " & @UserName & @CRLF
    $sReportErrorMessage &= "Program Dir: " & @ScriptDir & @CRLF
    $sReportErrorMessage &= "Time: " & _Now() & @CRLF
    $iReportErrorQuestion = _ErrorBox($sReportErrorMessage)
    If $iReportErrorQuestion = 1 Then
        $s_SmtpServer = "mail.server.com" 
        $s_FromName = "Your Name" 
        $s_FromAddress = "errors@example.com" 
        $s_ToAddress = "youremail@email.com" 
        $s_Subject = "ERROR: " & $oError.number & " (" & _Now() & ")" 
        $as_Body = $sReportErrorMessage
        _INetSmtpMail($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body)
    EndIf
EndFunc   ;==>_ReportError

Func _ErrorBox($err)
    $Form1 = GUICreate("Error", 311, 211, 309, 243)
    $descript = GUICtrlCreateLabel("An error has occured!" & @CRLF & @CRLF & "Would you like an error report to be sent?", 4, 4, 299, 41)
    $errortext = GUICtrlCreateEdit("", 4, 52, 301, 125)
    GUICtrlSetData(-1, $err)
    $sendy = GUICtrlCreateButton("Send", 232, 180, 75, 25, 0)
    $sendn = GUICtrlCreateButton("Don't Send", 152, 180, 75, 25, 0)
    GUICtrlSetTip(-1, "Do not send the error report")
    GUISetState(@SW_SHOW)
    $ret = -1
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $sendy
                $ret = 1
                ExitLoop
            Case $msg = $sendn
                $ret = 0
                ExitLoop
        EndSelect
    WEnd
    GUIDelete($Form1)
    Return $ret
EndFunc   ;==>_ErrorBox

EDIT: Fixed up code...

Edited by Bert

Share this post


Link to post
Share on other sites

I already had something simmalar to that done, the issue is that I don't have a way to dynamically retrieve the user's SMTP server, nor do I have a global SMTP server to use.

Share this post


Link to post
Share on other sites

Not everyone has a ISP SMTP address in their native email client. Using _INetMail() makes it situational as well as cumbersome and annoying for the user.

Share this post


Link to post
Share on other sites

Sadly, GooglePages is at the highest of my resources currently.

Share this post


Link to post
Share on other sites

#9 ·  Posted (edited)

A packet sniffer will retrieve your username and password leaving this system insecure.

Edited by Shyke

Share this post


Link to post
Share on other sites

Nevermind, SSL takes care of that threat.

Share this post


Link to post
Share on other sites

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
Sign in to follow this  
Followers 0