Script seems to work well. I can send it blank fields and it recovers every time. Problem is when I leave it running it crashes with the now infamous Can't use an undefined value as a hash reference At line 16. When it does this there is nothing in the inbox to process. I added 'or ()' to get around this problem, which seems to work when I send it blank fields. What else can I do to avoid this problem?
################################################ use strict; use diagnostics; use Win32::OLE; my $userid = "xxx"; my $server = "xxx/xxx/xxx"; my $Notes = Win32::OLE->new('Notes.NotesSession'); my $Database = $Notes->GetDatabase("$server", "mail\\$userid.nsf"); while (1) { my $t = (localtime); print "$t\n"; sleep 1; my $AllDocuments = $Database->AllDocuments or next; my $Document = $AllDocuments->GetFirstDocument or next; my $From = $Document->GetFirstItem('From')->{Text} or (); # This is the line it's crashing on my $Password = $Document->GetFirstItem('Subject')->{Text} or (); my $Command = $Document->GetFirstItem('Body')->{Text} or (); my $Subject = "CMD: $Command"; if ($Password eq "xyz") { $a = `$Command`; print "!"; } else { $a ="You do not have access to this system. This attack has been logged"; $Subject = "ACCESS DENIED"; open(BAD, ">>BADPASS.TXT"); print BAD "::ACCESS VIOLATION:: \nFrom: $From\nSubject: $Password\nBody:\n\n$Command \n\n "; close(BAD); print "#"; } my $Report = "$a"; my $ReportMail = $Database->CreateDocument('NEW'); $ReportMail->{Form} = 'Memo'; $ReportMail->{Body} = "$Report"; $ReportMail->{SendTo} = "$From"; $ReportMail->{Subject} = "$Subject"; $ReportMail->Save(1, 1); $ReportMail->Send(0); foreach (1..3) { my $AllDoc = $Database->AllDocuments or next; my $delete = $AllDoc->GetFirstDocument or next; $delete->Remove(1) or next; ################################################ Chris Benco Network Administrator Austin Powder Company 216-464-2400 x277 [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]