My bad, I am using Win32:OLE, full script is below.
#Option Explicit
use strict;
use warnings;
use Win32::OLE qw(EVENTS);
&application_newmail('<EXCHANGESERVER>', '<USERNAME>');
#
sub application_newmail {
my ($server, $alias) = @_; # connect to mailbox of CN $alias us
+ing 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,$mapike
+y);
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->L
+astError();
my $filter = $messages->Filter() or return Win32::OLE->LastError()
+;
$filter->{Unread} = 1; # Only unread messages
$messages->Sort(); # default Sort is ASC on CdoPR_MESSAGE_DELIV
+ERY_TIME
return $err if $err = Win32::OLE->LastError();
# Gather Subject and Body
for (my $msg = $messages->GetFirst(); $msg; $msg = $messages->GetN
+ext()) {
if($msg->ConversationTopic =~ /^Test Subject Text /){
print "Subject => " . $msg->ConversationTopic . "\n";
print "Body: ". $msg->Text."\n";
}
# Next Item
}
$session->Logoff();
} # end sub
|