Here is some working code to get you started.
#Read Outlook Folder...
use strict;
use Win32::OLE qw(in);
use Constant olFolderCalendar=>9;
my $Outlook = Win32::OLE->GetObject("Outlook.Application")
|| Win32::OLE->new("Outlook.Application");
my $Session = $Outlook->Session;
#my $NameSpace = $Session->GetNameSpace("MAPI");
#my $ContactsFolder = $NameSpace->GetDefaultFolder(olFolderContacts);
ShowSubFolders ($Session->Folders);
#################################################
sub ShowSubFolders{
my $FolderCollection = shift;
my $level = shift || 0;
for my $Folder (in $FolderCollection) {
print " " x $level . "Folder$level: $Folder->{Name}\t(\n";# . $Fo
+lder->Items->{Count}. ")\n";
#if ($Folder->{Name} =~ /Personal Folders/) {
if ($Folder->{Name} =~ /^Mailbox|^Issues|^Public Folders|^All Publ
+ic|Operations/) {
ShowSubFolders($Folder->Folders, $level + 1);
}
if ($Folder->{Name} =~ /Inbox|All Public|Operations/) {
my $msgCount=1;
print "*** Please OK the msgbox in outlook that requests externa
+l program access**\n";
$Folder->Items->Sort ("CreationTime",1); # Descending by date
for my $Item (in $Folder->Items) {
print "$msgCount: $Item->{SenderName} : $Item->{Subject}\n";
#print "\t $Item->{Body} \n\n";
last if $msgCount++ > 9;
}
}
}
}
Update:++ on the Mail::Outlook suggestion below. I was not aware that it provided this functionality.
"As you get older three things happen. The first is your memory goes, and I can't remember the other two... "
- Sir Norman Wisdom
|