"be consistent" | |
PerlMonks |
Re: Win32::OLE Outlook and E-mail security updateby Anonymous Monk |
on Jun 03, 2004 at 17:08 UTC ( [id://360289]=note: print w/replies, xml ) | Need Help?? |
#########################################################################################
#- -- This program inspects the internet header of all Microsoft Outlook (2002 SP-2) messages in the user-defined “MyAccount” #-- directory to determine if the email was sent to myaccount@charter.net If this is not the case, then it is spam and #-- the program puts the email in the “Deleted Items” folder. If the email was sent to myaccount@charter.net place #-- the email in the MyAccount->Filtered folder. This program assumes Microsoft Outlook is running. This program #-- does not cause the Outlook Security Window to open, so nothing to worry about. #-- Author – Eric C. Hansen, May 2004 eric.amerwood@charter.net ####################################################################################################
use Win32::OLE; use Win32::GuiTest; use Win32::Clipboard;
$OL = Win32::OLE->GetActiveObject('Outlook.Application'); $NameSpace = $OL->GetNameSpace("MAPI"); $Inbox = $NameSpace->GetDefaultFolder(6); #-- inbox folder $Deleted = $NameSpace->GetDefaultFolder(3); #-- deleted items folder $Root = $Inbox->Parent(); $MyAccount = $Root->Folders("MyAccount"); $MyAccountOK = $MyAccount->Folders("Filtered"); $Clip = Win32::Clipboard();
@wins = Win32::GuiTest::FindWindowLike(0,"^Microsoft Outlook",'mspim_wnd32'); #-- mspim_wnd32 is the class Win32::GuiTest::SetForegroundWindow($wins[0]);
$cnt=$MyAccount->Items->Count; #-- get a count of messages in folder "MyAccount"
while ($cnt > 0) {
$Clip->Empty(); #-- empty the clipboard
$MyAccount->Items($cnt)->Display; #-- display/open message with index of $cnt in the MyAccount folder
Win32::GuiTest::SendKeys("%Vp"); #-- open options dialog ALT-V-p Win32::GuiTest::SendKeys("{TAB 6}"); #-- move down to internet header field Win32::GuiTest::SendKeys("{APP} {DOWN 2} {ENTER}"); #-- put internet header in clipboard Win32::GuiTest::SendKeys("{TAB}"); #-- move to Cancel Button Win32::GuiTest::SendKeys("{ENTER}"); #-- press Cancel Button Win32::GuiTest::SendKeys("%{F4}"); #-- close message ALT-F4
undef $text; $text=$Clip->Get(); #-- get clipboard contents $text=~tr/A-Za-z.@/*/c; #-- convert all but listed valid characters to * $text=~tr/*//d; #-- now delete asterisks $text=lc($text); #-- convert to lowercase
# -- now check for our email address in the internet header text if ($text !~ /myaccount\@charter\.net/) { $MyAccount->Items($cnt)->Move($Deleted); #-- move message to “Deleted Items” folder } else { $MyAccount->Items($cnt)->Move($MyAccountOK); #-- move message to “MyAccount->Filtered folder }
$cnt--; }
#-- end script
In Section
Code Catacombs
|
|