#!/usr/local/bin/perl use MIME::Parser; use strict; use warnings; ## directory to store all parsed MIME parts my $outputdir = "./mimemail"; my $parser = new MIME::Parser; $parser->output_dir($outputdir); ## this creates files for all parts my $entity = $parser->read(\*STDIN); my $num_parts = $entity->parts; ## define attachment types to keep -- notice all lowercase ## add as many types as you like. my %type_ok = ( 'application/octet-stream' => 1 ); if ($num_parts > 0) { for (my $i = 0; $i < $num_parts; $i++) { my $part = $entity->parts($i); ## note: lc so types have a better chance of matching my $type = lc $part->mime_type; my $bh = $part->bodyhandle; ## delete parts we don't want if (! exists $type_ok{$type}) { my $status = system("rm '$bh->{MB_Path}'"); die $! unless $status == 0; } } }