#! /usr/perl/bin -w
#
# david landgren 28-sep-1999
# copyright (c) David Landgren 2001
# This program is free software, it is distributed
# under the sames terms as Perl itself. (Did I get that right?)
use strict;
use Win32::OLE qw/in/;
use constant INBOX => 6;
my $r;
eval {
$r = Win32::OLE->GetActiveObject('Outlook.Application')
};
if ($@ || !defined($r)) {
$r = Win32::OLE->new('Outlook.Application', sub {$_[0]->Quit;}) or d
+ie "oops\n";
}
my $namespace = $r->GetNameSpace( 'MAPI' ) or die "can't open MAPI
+ namespace\n";
my $count = 0;
my $folder;
if( $folder = $namespace->GetDefaultFolder( INBOX )) {
print "$folder->{Name}\n";
my $f = $folder;
foreach( @ARGV ) {
# re-reading this, I remember what this is for
# you pass the names of the sub sub [...] folder
# you want to examine as arguments on the command line
# e.g. perl extract.pl archive 1999 lists vmsperl
mkdir $_, 0666;
chdir $_;
$f = $f->Folders( $_ ); # walk down the folder path
print "$f->{Name}\n" or die Win32::OLE->LastError() . "\n";
}
foreach my $it (reverse in $f->Items) {
++$count;
print "$it->{ReceivedTime} $it->{Subject}\n";
my $subj = $it->{Subject};
$subj =~ tr/a-zA-Z0-9/_/c;
$subj =~ s/_+/_/g;
open OUT, sprintf( ">%03s-$subj.txt", $count ) or die "Cannot open
+ $count for output: $!\n";
print OUT <<EOM;
To: $it->{To}
CC: $it->{CC}
From: $it->{SenderName}
Subject: $it->{Subject}
Date: $it->{ReceivedTime}
$it->{Body}
EOM
close OUT;
}
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|