my $i = 0;
@parts = map { [ $_, 1, ++$i ] } @parts;
while (my $p = shift @parts) {
- my ($part, $depth, @idx) = @$p;
+ my ($part, $depth, $idx) = @$p;
my @sub = $part->subparts;
if (@sub) {
$depth++;
$i = 0;
- @sub = map { [ $_, $depth, @idx, ++$i ] } @sub;
+ @sub = map {
+ [ $_, $depth, "$idx.".(++$i) ]
+ } @sub;
@parts = (@sub, @parts);
} else {
$cb->($p, $cb_arg);
}
}
} else {
- $cb->([$mime, 0, 0], $cb_arg);
+ $cb->([$mime, 0, 1], $cb_arg);
}
}
# times when it should not have been:
# <87llgalspt.fsf@free.fr>
# <200308111450.h7BEoOu20077@mail.osdl.org>
+ # But also do not try this with ->{is_submsg} (message/rfc822),
+ # since a broken multipart/mixed inside a message/rfc822 part
+ # has not been seen in the wild, yet...
if ($err && ($ct =~ m!\btext/\b!i ||
- $ct =~ m!\bmultipart/mixed\b!i)) {
+ (!$part->{is_submsg} &&
+ $ct =~ m!\bmultipart/mixed\b!i) ) ) {
my $cte = $part->header_raw('Content-Transfer-Encoding');
if (defined($cte) && $cte =~ /\b7bit\b/i) {
$s = $part->body;