/usr/bin/msgconvert is in libemail-outlook-message-perl 0.919-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | #!/usr/bin/perl -w
#
# msgconvert:
#
# Convert .MSG files (made by Outlook (Express)) to multipart MIME messages.
#
use Email::Outlook::Message;
use Email::Sender::Transport::Mbox;
use Getopt::Long;
use Pod::Usage;
use File::Basename;
use vars qw($VERSION);
$VERSION = "0.904";
# Setup command line processing.
my $verbose = '';
my $mboxfile = '';
my $outfile = '';
my $help = ''; # Print help message and exit.
GetOptions(
'mbox=s' => \$mboxfile,
'verbose' => \$verbose,
'outfile=s' => \$outfile,
'help|?' => \$help) or pod2usage(2);
pod2usage(1) if $help;
# Check file names
defined $ARGV[0] or pod2usage(2);
my $using_mbox = $mboxfile ne '';
my $using_outfile = $outfile ne '';
if ($using_outfile && scalar @ARGV > 1) {
die "The --outfile parameter does not allow to specify more than one " .
"<file.msg>. See --help for more details.";
}
my $transport;
if ($using_mbox) {
$transport = Email::Sender::Transport::Mbox->new({ filename => $mboxfile });
}
foreach my $file (@ARGV) {
my $msg = new Email::Outlook::Message($file, $verbose);
my $mail = $msg->to_email_mime;
if ($using_mbox) {
$transport->send($mail->as_string, { from => $mail->header('From') || '' });
} else {
if (!$using_outfile) {
my $basename = fileparse($file, qr/\.msg/i);
$outfile = "$basename.eml";
}
if ($outfile eq '-') {
open OUT, ">&", STDOUT;
} else {
open OUT, ">", $outfile or die "Can't open $outfile for writing: $!";
}
print OUT $mail->as_string;
close OUT;
}
}
#
# Usage info follows.
#
__END__
=head1 NAME
msgconvert - Convert Outlook .msg files to mbox format
=head1 SYNOPSIS
msgconvert [options] <file.msg>...
msgconvert --outfile <outfile> <file.msg>
Options:
--mbox <file> deliver messages to mbox file <file>
--outfile <oufile> write message to <outfile> or - for STDOUT
--verbose be verbose
--help help message
=head1 OPTIONS
=over 8
=item B<--mbox>
Deliver to the given mbox file instead of creating individual .eml
files.
=item B<--outfile>
Writes the message into the outfile instead of individual .eml files. For
STDOUT "-" can be used as outfile. This option cannot be used together with
multiple <file.msg> instances.
=item B<--verbose>
Print information about skipped parts of the .msg file.
=item B<--help>
Print a brief help message.
=back
=head1 DESCRIPTION
This program will convert the messages contained in the Microsoft Outlook
files <file.msg>... to message/rfc822 files with extension .eml.
Alternatively, if the --mbox option is present, all messages will be put in
the given mbox file. This program will complain about unrecognized OLE
parts in the input files on stderr.
=head1 BUGS
The program will not check whether output files already exist. Also, if you
feed it "foo.MSG" and "foo.msg", you'll end up with one "foo.eml",
containing one of the messages.
Not all data that's in the .MSG file is converted. There simply are some
parts whose meaning escapes me. One of these must contain the date the
message was sent, for example. Formatting of text messages will also be
lost. YMMV.
=head1 AUTHOR
Matijs van Zuijlen, C<matijs@matijs.net>
=head1 COPYRIGHT AND LICENSE
Copyright 2002--2014 by Matijs van Zuijlen
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
|