in reply to Re: Decode a mail with MIME::Parser
in thread Decode a mail with MIME::Parser

I'd move
close MSG;

outside of the for loop just for aesthetic purposes and check for errors on your open statement:

open (MSG, ">>mailmessage") or die "File open failed: $!\n";
but otherwise it performs as I would expect. Try saving a copy of your mail message to a file and invoke the program like so:
/tmp/ < mail.message.file

This suggests that you'll probably have to modify your procmail config line in some way, but I'm not familiar with procmail.

Update: I've had a similar problem using the /etc/aliases file to strip/redirect mail to a special account. I solved my problem by parsing the message and then resending it to a different account. This is sort of ugly, but it works until I can figure out the correct method:

#/etc/aliases entry ## The below entry saves an unaltered copy on account original, and ## pipes the incoming message through our program which ## resends to the final destination account. Be sure to execute ## 'newaliases' after you modify the /etc/aliases for the changed ## entry to be updated. original: \original, "|/tmp/"
The modified perl program:
## # MboxParser stuff here ## use MIME::Lite; my $msg = new MIME::Lite To => '', From => $from, Cc => $cc, Subject => $subject, Type => 'TEXT', Comments => $to, ## save original to: if needed Data => $body_str; MIME::Lite->send('smtp', "", Timeout=>60); $msg->send;