#!/usr/bin/perl use strict; use MIME::Base64; use MIME::QuotedPrint; use Mail::Message; use Mail::Field; use MIME::Head; use MIME::Parser; main(); exit 0; sub main { my($message, $body, $attachment, $from, $line, $i, $boundary, $newmessage, $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)) { sendmessage($message); return; } $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"); $newmessage = $message->head->string; $newmessage .= "--".$boundary->boundary."\n"; $newmessage .= $body->as_string; $message->body->part(0)->delete; $newmessage .= "\n\n"; $newmessage .= $attachment->bodyhandle->as_string; $newmessage .= "\n\n\n"; $newmessage .= $message->body->string; $newmessage = Mail::Message->read($newmessage); sendmessage($newmessage); } else { sendmessage($message); } } sub sendmessage { my $message = $_[0]; $message->head->delete('To'); $message->head->delete('Message-Id'); $message->head->delete('X-UIDL'); $message->head->delete('Resent-From'); $message->head->delete('Resent-To'); $message->head->delete('Resent-Date'); $message->head->delete('Resent-Message-Id'); $message->head->delete('Resent-User-Agent'); $message->head->add('To: putanemailaddresshere'); $message->send; }