use MIME::Parser; use Mail::Address; my $parser = new MIME::Parser; my $MIME_entity; eval { $MIME_entity = $parser->parse(\*STDIN); } if ($@) { print "Trouble parsing mail:\n"; print $parser->results->msgs(); } else { my $header = $MIME_entity->head(); my $subject = $header->get('Subject'); # Assumes one subject header print "No Subject header found!\n" unless defined ($subject); my $from = $header->get('From'); # Assumes one From header print "No From header found!\n" unless defined ($from); my @from_addresses = Mail::Address->parse($from); my $address; if (@from_addresses) { # Assumes 1st address is the only one we care about $address = $from_addresses[0]->address(); } else { print "No address found in from line!\n"; } print "Subject is $subject\nMail is from $address\n"; # See the MIME::Entity manpage for clues on how to muck about with # the body of the email here } $parser->filer->purge();