#!/usr/bin/perl -w use strict; use warnings; use Email::Outlook::Message; use Email::LocalDelivery; use Getopt::Long; use Pod::Usage; use File::Basename; use vars qw($VERSION); $VERSION = "0.903"; use File::Slurp; # exports read_dir sub my $verbose = ''; my $mboxfile = ''; my $help = ''; GetOptions( 'mbox=s' => \$mboxfile, 'verbose' => \$verbose, 'help|?' => \$help) or pod2usage(2); pod2usage(1) if $help; defined $ARGV[0] or pod2usage(2); my $dir = $ARGV[0]; # pass in directory instead of file foreach my $file ( read_dir( $dir ) ) { next unless $file =~ /\.msg/; # skip anything that is not a message $file = $dir .'/' . $file; # Email::Outlook::Message, does it require fully qualified path? my $mail = new Email::Outlook::Message($file, $verbose)->to_email_mime->as_string; if ($mboxfile ne '') { Email::LocalDelivery->deliver($mail, $mboxfile); } else { my $basename = basename($file, qr/\.msg/i); my $outfile = "$basename.mime"; open OUT, ">:utf8", $outfile or die "Can't open $outfile for writing: $!"; print OUT $mail; close OUT; } }