#!/usr/bin/perl use strict; use MIME::Base64; use MIME::QuotedPrint; use Mail::Message; use Mail::Field; use MIME::Head; use MIME::Parser; my($message, $body, $attachment, $from, $line, $i, $boundary, $parser); $line = "0"; $message = ""; while () { if (/^From\s/ && $line eq "0") { $from = $_; $line = "1"; } else { $line = "1"; $message .= $_; } } $message = Mail::Message->read($message); if ($message->body->isMultipart) { $parser = new MIME::Parser; $parser->output_to_core(1); $attachment = $parser->parse_data($message->body->part(1)->string); if (!($attachment->head->recommended_filename =~ /PRCR_.*?_Verification_Report\.txt/m || $attachment->head->recommended_filename =~ /PRCR_.*?_Download_File\.txt/m || $attachment->head->recommended_filename =~ /PRCR_.*?_Excel_CSV_File\.csv/m)) { print $from; print $message->string; exit 0; } $attachment = $attachment->bodyhandle->as_string; $attachment =~ s/\r//g; $boundary = Mail::Field->new('Content-type',$message->head->get('content-type')); $body = $parser->parse_data($message->body->part(0)->string); $body->head->mime_attr("content-type.format" => "fixed"); print $from; print $message->head->string; print "--".$boundary->boundary."\n"; print $body->as_string; $message->body->part(0)->delete; print "\n\n"; print $attachment; print "\n\n\n"; print $message->body->string; } else { print $from; print $message->string; }