package Mail::Audit::MimeEntity;
use strict;
use File::Path;
use MIME::Parser;
use MIME::Entity;
use Mail::Audit::MailInternet;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $MIME_PARSER_TMPDIR);
@ISA = qw(Mail::Audit MIME::Entity);
$VERSION = '2.0';
$MIME_PARSER_TMPDIR = "/tmp/".getpwuid($>)."-mailaudit";
my $parser = MIME::Parser->new();
my @to_rmdir;
sub autotype_new {
my $class = shift;
my $mailinternet = shift;
$parser->ignore_errors(1);
mkdir ($MIME_PARSER_TMPDIR, 0777);
if (! -d $MIME_PARSER_TMPDIR) { $MIME_PARSER_TMPDIR = "/tmp" }
$parser->output_under($MIME_PARSER_TMPDIR);
my $self = eval { $parser->parse_data([@{$mailinternet->head->header}, "\n", @{$mailinternet->body}]); };
my $error = ($@); if ($error) {
return (Mail::Audit::MailInternet->autotype_new( $mailinternet ), "encountered error during parse: $error");
}
push @to_rmdir, $parser->filer->output_dir;
bless($self, $class);
return ($self, 0);
}
sub DESTROY {
rmtree(\@to_rmdir, 0, 1);
}
sub parser { $parser }
sub is_mime { 1; }
1;