#!/usr/bin/perl -w use strict; use warnings; use MIME::Parser; my ($body, $i, $io, $subEntity); my $parser = new MIME::Parser; $parser->ignore_errors(1); $parser->output_to_core(1); my $MIME_entity = $parser->parse(\*STDIN); my $error = ($@ || $parser->last_error); #get from, to and subject headers. my $header = $MIME_entity->head; my $subject = $header->get('Subject'); my $to = $header->get('To'); my $from = $header->get('From'); chomp($subject); chomp($to); chomp($from); #get body if ($MIME_entity->parts > 0){ for ($i=0; $i<$MIME_entity->parts; $i++){ $subEntity = $MIME_entity->parts($i); if (($subEntity->mime_type =~ m/text\/html/) || ($subEntity->mime_type =~ m/text\/plain/)){ if ($io = $subEntity->open("r")){ while (defined($_=$io->getline)){ $body .= $_; } $io->close; } } } } else { $body = join "", @{$MIME_entity->body}; } # email report back to sender showing the # parts of original messages open MAIL, ("|/usr/sbin/sendmail -t") || die "Unable to send mail: $!"; print MAIL "To: $from\n"; print MAIL "From: root\n"; print MAIL "Subject: mime parser test\n\n"; print MAIL "Messege was contructed as follows: \$from: $from \$to: $to \$subject: $subject \$body: $body "; close(MAIL);