I don't think Microsoft will ever give out the exact format that their
database is in for parsing, for obvious reasons. If you want to parse the
contents of mailboxes, I would recommend checking out the Win32::Exchange
module and a good long research session at www.microsoft.com/msdn. You can
use Win32::OLE to do almost anything that a vbscript can do. I would also
recommend trying out OutlookSpy. I can't remember where I got it, but do a
search on Google and you should find it. It definitely helps when it comes
to finding methods and objects that you can use if you decide to go the
Win32::OLE route. Here's some code I started when I was looking into the
same kind of thing.
Of course, this must be done on a Win32 system.
########################################
use strict;
use warnings;
use Win32::OLE;
use Win32::OLE::Variant;
Win32::OLE->Initialize(Win32::OLE::COINIT_OLEINITIALIZE);
use Time::Local;
print "Opening a new MAPI.Session object...\n";
my $session = Win32::OLE->new('MAPI.Session') or die "Couldn't create a new
MAPI.Session object!\n$!\n";
print "Logging on...\n";
$session->Logon();
print "Opening the Inbox...\n";
my $inbox = $session->Inbox || die;
print "Getting the list of folders...\n";
my @folders = ();
my $folders = $inbox->Folders || die;
my $folder = $folders->GetFirst || die;
while($folder){
push @folders,$folder->Name;
$folder = $folders->GetNext;
}
print "\n\n";
print "Folders\n";
print "======================\n";
foreach(sort @folders){
print " $_\n";
}
print "\n\n";
print "Messages\n";
print "======================\n";
print "Getting the Messages...\n";
my $messages = $inbox->Messages || die;
print "Getting the first message...\n";
my @msgs = ();
my $message = $messages->GetFirst || die;
while($message){
my $msgtime = $message->TimeReceived;
my @temparray = ($message,$msgtime);
push @msgs,[EMAIL PROTECTED];
$message = $messages->GetNext;
}
foreach my $item(@msgs){
my @date = split /\s+/,@{$item}[1];
my($mon,$mday,$year) = split /\//,$date[0];
my($hour,$min,$sec) = split /:/,$date[1];
if($date[2] eq 'PM'){
$hour += 12;
}
if($hour == 24){
$hour = 0;
}
push @{$item},timelocal($sec,$min,$hour,$mday,$mon,$year);
}
my $i;
foreach my $msg(sort{$b->[2] cmp $a->[2]} @msgs){
if($msg->[0]->FolderID eq $inbox->ID){
print "\n\n";
print "Received: ".$msg->[0]->TimeReceived."\n";
print "Subject: ".$msg->[0]->Subject."\n";
print "From: ".$msg->[0]->Sender->DisplayName."\n\n";
print $msg->[0]->Text;
print "\n";
print
"----------=============#############==============-----------\n";
}
$i++;
if($i > 10){
exit 0;
}
}
###############################################
-----Original Message-----
From: R. Joseph Newton [mailto:[EMAIL PROTECTED]
Sent: Saturday, June 21, 2003 1:25 PM
To: Morrison, Trevor (Trevor)
Cc: [EMAIL PROTECTED]
Subject: Re: Exchange Server Mailbox format
"Morrison, Trevor (Trevor)" wrote:
> Hi,
>
> Does anyone know which mail box storage format an 2000 exchange server
uses. I am looking to parse emails that are stored in the folders.
You should probably search the Microsoft knowledge base for that
information. It is not really a Perl question. There may be Perl modules
that can parse those mailboxes, though.
As a note: Please do not use return receipt requests when posting to this
group. They are annoying and intrusive.
Joseph
>
>
> Thanks
>
> Trevor
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]