#C:\Perl\bin\Perl.exe -w use strict; use IO::File; use Data::Dumper; use Mail::MboxParser; BEGIN { use CGI::Carp qw(carpout); open(LOG, ">>parsembox-log") or die("Unable to open parsembox-log: $!\n"); carpout(LOG); } use Mail::Box; use Mail::Box::Manager; use Mail::Message; my $mb = Mail::MboxParser->new('/home/*********/Mail/.family.directory/Browne, Bill & Martha/FOL03E97.PMM', decode => 'ALL'); # ----------- # slurping for my $msg ($mb->get_messages) { print $msg->header->{subject}, "\n"; $msg->store_all_attachments('/tmp'); } # iterating while (my $msg = $mb->next_message) { print $msg->header->{subject}, "\n"; # ... } my $data ="To: mickey@somewhere.com"; my $msg = Mail::Message->read($data); my @addr = $msg->get('To')->addresses; exit(0); sub parse_mail_folder { print "into parse_mail_folder sub","\n"; my $folder_file = shift; print "Folder file: ",$folder_file,"\n"; my $mgr = Mail::Box::Manager->new(); print "my $mgr value: ",$mgr,"\n"; my $folder = $mgr->open($folder_file) or die "Cannot open Folder","\n"; print "my folder value: ",$folder,"\n"; #my $message1 = $folder->message; #print "message: ",$message1,"\n"; my @email_addr; foreach my $message ($folder->messages) { print $message->get('Subject') || '', "\n"; print "into foreach loop","\n"; my $dest = $message->get('To'); # retrieve the To-address print $dest,"\n"; @email_addr = split /,/, $dest; # retrieve multiple addresses # assume the email address format is as follows - # # John & Jenny Arnold # # you have to tweak a bit if the format is not as expected # or use the Mail::Address module to do the trick - to # convert the mail address into its canonical form. foreach (@email_addr) { my ($name, $addr) = /(.*)<(.*)>/; $name = s/^\s+//g; # trim spaces at front $name = s/\s+$//g; # trim spaces at rear $addr = s/^\s+//g; # trim spaces at front $addr = s/\s+$//g; # trim spaces at rear #print Dumper($addr); print $addr,"\n"; if (! exists $MailList->{$addr}) { # ok, we haven't seen this Email address yet $MailList->{$addr} = $name; # and do other things print Dumper($name); } } } $folder->close; } sub load_mail_list { my $filename = shift; my $f = new IO::File $filename, "r" or die "Can not open mail list"; my %mlist; # load the header chomp($mlist{title} = <$f>); chomp($mlist{sender} = <$f>); chomp($mlist{nosig} = <$f>); <$f>; # load the rest of the email addresses my %MailAddress; while (<$f>) { chomp; my ($name, $email) = /^(.*)\s+<(.*)>$/; next if $email eq ''; $MailAddress{$email} = $name; } $mlist{mlist} = \%MailAddress; return \%mlist; } sub load_mail_folders { my $filename = shift; my $f = new IO::File $filename, "r" or die "Can not open mail list"; my %mbox; while (<$f>) { chomp; next unless ( $_ ne '' and m/^0,0,/ ); s/"//g; my @fld = split /,/; my ($folder) = $fld[2] =~ /.*:.*:(.*)/; $mbox{$fld[-1]} = "/home/*********/Mail/.family.directory/Browne, Bill & Martha/$folder.PMM"; # full path to mboxes } return \%mbox; }