Why not use Perl's tools?
#!/usr/bin/perl -w
use strict;
# MDaemon msg to mailbox mail file converter
# Usage: msg2mbox *.msg > mail.mbox
die "usage: msg2mbox *.msg > file.mbox\n" unless @ARGV;
my @file = @ARGV;
FILE: for(@file) {
@ARGV = $_;
my @line = <>;
my ($addr, $date);
for(@line) {
s/\r//g;
if /^Encrypted\s+By\s+MDaemon/) {
next FILE;
}
elsif(/^Return-path:(.*)/) {
local $_ = join ' ', split " ", $1;
tr/ //d;
s/<(.+)>/$1/;
$addr = $_;
}
elsif(/^Date:(.*)/) {
local $_ = join ' ', split " ", $1;
tr/,//d;
# weekday day month year time adj -> weekday month day tim
+e year
$date = join " ", +(split)[0, 2, 1, 4, 3];
}
}
$addr ||= "unknown\@uknown.com";
$date ||= "Mon Jan 1 01:00:00 2000";
print "From $adr $dt\n", @line;
}
Untested.
You should probably add a Lines: or Content-length: header if neither is present - or just let Mail::Box handle the gory details for you.
Makeshifts last the longest. |