http://www.perlmonks.org?node_id=456595


in reply to Re^2: Win32 - M$ Outlook and Perl.
in thread Win32 - M$ Outlook and Perl.

This will recursively print out the names of all subfolders in Inbox. You could combine this with the code above to get the messages in each subfolder.
use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; $|++; #get an Outlook object my $outlook; $outlook = Win32::OLE->new('Outlook.Application'); die unless $outlook; #get the Inbox folder my $namespace = $outlook->GetNamespace("MAPI"); my $folder = $namespace->GetDefaultFolder(olFolderInbox); my $items = $folder->Items; print STDERR "Folder: ", $folder->Name,"\n"; print STDERR "Total entries: ",$items->Count,"\n"; print_folders($folder); sub print_folders { my $folder = shift; print "Folder: " . $folder->Name . "\n"; if ($folder->Folders->Count) { foreach my $i (1..$folder->Folders->Count) { print_folders($folder->Folders($i)); } } }

Replies are listed 'Best First'.
Re^4: Win32 - M$ Outlook and Perl.
by pankaj_it09 (Scribe) on May 04, 2011 at 13:03 UTC
    What if a new folder (not a subfolder) is created by the user just like Inbox ?

      pankaj_it09:

      Change the line:

      my $folder = $namespace->GetDefaultFolder(olFolderInbox);

      to select the folder you want to start from.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.

        I don't think that will work for user defined folder.

        If the user has created a folder like "test" which has the same level as that of the "Inbox" folder then what will be the input there.

        Currently I am looking into the following: Migration from Outlook to any other mail program