diff options
author | Eric Wong <e@yhbt.net> | 2020-05-16 10:03:22 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-05-17 06:56:40 +0000 |
commit | e60231148eb604a379033c69e8c4494eb1753783 (patch) | |
tree | c49950605f50bc46082e20ee7fe679c6cf76989e /t/eml.t | |
parent | 77aa1a9eae83fa60eb8208710a714aa4f39d9b34 (diff) | |
download | public-inbox-e60231148eb604a379033c69e8c4494eb1753783.tar.gz |
Email::MIME never supported this properly, but there's real instances of forwarded messages as message/rfc822 attachments. message/news is legacy thing which we'll see in archives, and message/global appears to be the new thing. gmime also supports message/rfc2822, so we'll support it anyways despite lacking other evidence of its existence. Existing attachments remain downloadable as a whole message, but individual attachments of subparts are now downloadable and can be displayed in HTML, too. Furthermore, ensure Xapian can now search for common headers inside those messages as well as the message bodies.
Diffstat (limited to 't/eml.t')
-rw-r--r-- | t/eml.t | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -117,6 +117,34 @@ EOF '', 'each_part can clobber body'); } +if ('descend into message/rfc822') { + my $eml = eml_load 't/data/message_embed.eml'; + my @parts; + $eml->each_part(sub { + my ($part, $level, @ex) = @{$_[0]}; + push @parts, [ $part, $level, @ex ]; + }); + is(scalar(@parts), 6, 'got all parts'); + like($parts[0]->[0]->body, qr/^testing embedded message harder\n/sm, + 'first part found'); + is_deeply([ @{$parts[0]}[1..2] ], [ 1, '1' ], + 'got expected depth and level for part #0'); + is($parts[1]->[0]->filename, 'embed2x.eml', + 'attachment filename found'); + is_deeply([ @{$parts[1]}[1..2] ], [ 1, '2' ], + 'got expected depth and level for part #1'); + is_deeply([ @{$parts[2]}[1..2] ], [ 2, '2.1' ], + 'got expected depth and level for part #2'); + is_deeply([ @{$parts[3]}[1..2] ], [ 3, '2.1.1' ], + 'got expected depth and level for part #3'); + is_deeply([ @{$parts[4]}[1..2] ], [ 3, '2.1.2' ], + 'got expected depth and level for part #4'); + is($parts[4]->[0]->filename, 'test.eml', + 'another attachment filename found'); + is_deeply([ @{$parts[5]}[1..2] ], [ 4, '2.1.2.1' ], + 'got expected depth and level for part #5'); +} + # body-less, boundary-less for my $cls (@classes) { my $call = 0; |