]>
git.proxmox.com Git - pmg-api.git/blob - src/PMG/MIMEUtils.pm
1 package PMG
::MIMEUtils
;
3 # provides helpers for dealing with MIME related code
11 # wrapper around MIME::Parser::new which allows to give the config as hash
13 my ($params, $dump_under) = @_;
15 my $parser = new MIME
::Parser
;
17 $parser->extract_nested_messages($params->{nested
} // 0);
18 $parser->ignore_errors($params->{ignore_errors
} // 1);
19 $parser->extract_uuencode($params->{extract_uuencode
})
20 if defined($params->{extract_uuencode
});
21 $parser->decode_bodies($params->{decode_bodies
})
22 if defined($params->{decode_bodies
});
23 $parser->max_parts($params->{maxfiles
})
24 if defined($params->{maxfiles
});
26 my $dumpdir = $params->{dumpdir
};
28 $parser->output_to_core(1);
29 } elsif ($dump_under) {
30 $parser->output_under($dumpdir);
34 # Create and set the output directory:
35 (-d
$dumpdir || mkdir($dumpdir ,0755)) ||
36 die "can't create $dumpdir: $! : ERROR";
38 die "can't write to directory $dumpdir: $! : ERROR";
40 $parser->output_dir($dumpdir);
43 # this has to be done after setting the dumpdir
44 $parser->filer->ignore_filename($params->{ignore_filename
})
45 if defined($params->{ignore_filename
});
50 # bug fix for content/mimeparser.txt in regression test
54 if ($entity->mime_type =~ m
|multipart
/|i
&& !$entity->head->multipart_boundary) {
55 $entity->head->mime_attr('Content-type' => "application/x-unparseable-multipart");
61 sub traverse_mime_parts
{
62 my ($entity, $subbefore, $subafter) = @_;
64 if (defined($subbefore)) {
65 $subbefore->($entity);
68 foreach my $part ($entity->parts) {
69 traverse_mime_parts
($part, $subbefore, $subafter);
72 if (defined($subafter)) {