#Option Explicit use strict; use warnings; use Win32::OLE qw(EVENTS); &application_newmail('', ''); # sub application_newmail { my ($server, $alias) = @_; # connect to mailbox of CN $alias using server $server my $mapikey = "$server\n$alias"; my $err; my $session = Win32::OLE->new(qw(MAPI.Session)) or die Win32::OLE->LastError(); # Try to logon with dynamic profile under current account. # This may need a reasonable current CDO on your machine. my $mapi = $session->Logon(undef,undef,undef,1,undef,undef,$mapikey); return $err if $err = Win32::OLE->LastError(); # can be problematic. Therefore we iterate with GetFirst/GetNext (see below) # 'Check Inbox for messages and exit of none found my $messages = $session->Inbox->Messages() or return Win32::OLE->LastError(); my $filter = $messages->Filter() or return Win32::OLE->LastError(); $filter->{Unread} = 1; # Only unread messages $messages->Sort(); # default Sort is ASC on CdoPR_MESSAGE_DELIVERY_TIME return $err if $err = Win32::OLE->LastError(); # Gather Subject and Body for (my $msg = $messages->GetFirst(); $msg; $msg = $messages->GetNext()) { if($msg->ConversationTopic =~ /^Test Subject Text /){ print "Subject => " . $msg->ConversationTopic . "\n"; print "Body: ". $msg->Text."\n"; } # Next Item } $session->Logoff(); } # end sub