Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 #### #!/usr/bin/perl -w use strict; use MIME::Parser; my $tmp_dir = '/tmp/parser-dir'; my $parser = MIME::Parser->new; mkpath($tmp_dir) unless -d $tmp_dir; $parser = MIME::Parser->new( ); $parser->extract_uuencode(1); $parser->extract_nested_messages(1); my $entry = $parser->parse(\*STDIN); for my $part ($entry->parts) { # dig into the parts if($part->mime_type eq 'multipart/alternative') { for my $a ($part->parts) { if($a->mime_type eq 'text/plain') { $part = $a; last; } } } my $mime = $part->mime_type; if($mime =~ m'text/.+' && !$found_msg++) { my $fh = $part->open('r'); if($fh) { while(defined(my $line = $fh->getline)) { $line =~ s/[\r\n]//g; push(@message, $line); } $fh->close; } } }