in reply to Outlook Express Reply Function

Your problem is that you are passing the entire message (header + body) in as the header in this line:
my $msg = Mail::MboxParser::Mail->new([<STDIN>],[<STDIN>]);
The first [<STDIN>] will read in the whole message and create a list of all the lines. Any "From:" lines that are found in the body are going to be counted as header "FromL" lines, so the parser creates an array of all of them.

There are several solutions. You could do this:

my $msgtext; { local $/; $msgtext = <STDIN> } my ($header, $body) = split /\n\r?\n/, $msgtext, 2; my $msg = Mail::MboxParser::Mail->new($header, $body);
or the more memory-efficient:
my @headerlines; while (<STDIN>) { last if /^\r?\n/; push @headerlines, $_; } my $msg = Mail::MboxParser::Mail->new(\@headerlines, "");
If you wanted the body, you could change that last line to:
my $msg = Mail::MboxParser::Mail->new(\@headerlines, [<STDIN>]);
I should say that most subscription processes require some specific code in the body and for good reason. For example, the "reply" you get may be just a vacaction message. Also, people could maliciously sign up others for a subscription just by sending two messages with the same forged "From:" line.

Replies are listed 'Best First'.
Re: Re: Outlook Express Reply Function
by devslashneil (Friar) on Jul 02, 2003 at 22:13 UTC
    Thanks a lot for your reply, it was very useful and informative. :-)

    Neil Archibald
    - /dev/IT -