xiao_B has asked for the wisdom of the Perl Monks concerning the following question:

Hi I'm using outlook 2000 and currently I have a number of machine-generated emails (HTML format) in my inbox. I need to write a perl script to extract those email content. I've no idea how to get started on extracting those email contents. I've tried searching through the database for some sample script to start off, but couldn't find one. Anyone has one or pointers for me to start off. Using the WIN32::OLE module. Thanks xiao B

Replies are listed 'Best First'.
Re: Extract email content from MS Outlook
by NetWallah (Canon) on Jan 04, 2008 at 05:27 UTC
    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

Re: Extract email content from MS Outlook
by bingos (Vicar) on Jan 04, 2008 at 11:02 UTC
      Hi all; im in dire need of assistance
      i tried the mail::outlook method, but i cant seem to find a way for it to read another public mailbox i added in outlook.
      more specifically, i was able to use all_folders() to show that the mailbox can be listed by mail:outlook methods
      and the issue is that how do i set the folder() method to read from the other mailbox.
      i been cracking my head for the past 2 days; all i could get was it reading from my default mailbox.
        in the end i gave up using Mail:Outlook instead i had easier time porting vbs example of accessing the OLE objects in outlook