Beefy Boxes and Bandwidth Generously Provided by pair Networks Joe
The stupid question is the question not asked
 
PerlMonks  

(RhetTbull) Re: Win32 - M$ Outlook and Perl.

by RhetTbull (Curate)
on May 06, 2002 at 21:42 UTC ( #164458=note: print w/ replies, xml ) Need Help??


in reply to Win32 - M$ Outlook and Perl.

This is a bit ugly but should get you started.

#!/cygdrive/c/Perl/bin/perl.exe use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; $|++; #what properties do we want to get from Outlook? my @properties = ( "SenderName", "To", "Subject", "Body" ); #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 out the header print join(",",@properties),"\n"; #loop through the items, printing out each one for my $itemIndex (1..$items->Count) { my $message = $items->item($itemIndex); next if not defined $message; my $attach = $message->Attachments(); my @entry; #todo: the following line causes warnings on "Read:" read receipt +messages push @entry, defined($message->{$_}) ? $message->{$_} : 'undef' fo +reach (@properties); if (defined $attach) { #if there's attachments, print out the message info and save t +he attachments print join(",",@entry),"\n"; print "Attachment count == ",$attach->Count,"\n"; for my $attach_index (1..$attach->Count) { my $attachment = $attach->item($attach_index); my $filename = $attachment->Filename; print "Attachment == ",$filename,"\n"; my $saveas = 'c:\temp\foo'; print "saving attachment '$filename' to '$saveas'...\n"; $attachment->SaveAsFile($saveas); warn "error saving attachment $filename to $saveas" if !-e + $saveas; } } }


Comment on (RhetTbull) Re: Win32 - M$ Outlook and Perl.
Download Code
Re: (RhetTbull) Re: Win32 - M$ Outlook and Perl.
by Mr. Muskrat (Abbot) on May 06, 2002 at 22:07 UTC

    Very nice.
    But I'd change the following: my $saveas = 'c:\temp\foo';
    to: my $saveas = "c:/temp/foo/".$filename;
    so you don't overwrite the attachments. Of course, you may have wanted to do that.


    Matthew Musgrove
    Who says that programmers can't work in the Marketing Department?
    Or is that who says that Marketing people can't program?
      Actually, that was just for demonstration purposes. I realized I was overwriting 'foo' but then again, I don't name anything I intend to keep 'foo' ;-)
Re^2: Win32 - M$ Outlook and Perl.
by ttdri1 (Initiate) on May 11, 2005 at 06:16 UTC
    Who do I read mail in subfolders: inbox/subfolder
      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)); } } }
        What if a new folder (not a subfolder) is created by the user just like Inbox ?
Re^2: Win32 - M$ Outlook and Perl.
by Anonymous Monk on May 24, 2011 at 03:38 UTC
    RhetTbull , you rock man !! thanks a lot. this code eased my task very much ...
Reaped: Re^2: Win32 - M$ Outlook and Perl.
by NodeReaper (Curate) on Nov 25, 2011 at 09:13 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://164458]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (13)
As of 2014-04-18 22:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (472 votes), past polls