Provided by: libmail-mboxparser-perl_0.55-4_all bug

NAME

       Mail::MboxParser::Mail::Body - rudimentary mail-body object

SYNOPSIS

           use Mail::MboxParser;

           [...]

           # $msg is a Mail::MboxParser::Mail
           my $body = $msg->body(0);

           # or preferably

           my $body = $msg->body($msg->find_body);

           for my $line ($body->signature) { print $line, "\n" }
           for my $url ($body->extract_urls(unique => 1)) {
               print $url->{url}, "\n";
               print $url->{context}, "\n";
           }

DESCRIPTION

       This class represents the body of an email-message.  Since emails can have multiple MIME-
       parts and each of these parts has a body it is not always easy to say which part actually
       holds the text of the message (if there is any at all).  Mail::MboxParser::Mail::find_body
       will help and suggest a part.

METHODS

       as_string ([strip_sig => 1])
           Returns the textual representation of the body as one string. Decoding takes place
           when the mailbox has been opened using the decode => 'BODY' | 'ALL' option.

           If 'strip_sig' is set to a true value, the signature is stripped from the string.

       as_lines ([strip_sig => 1])
           Sames as as_string() just that you get an array of lines with newlines attached to
           each line.

           NOTE: When the body is actually some encoded binary data (most commonly such a body is
           base64-encoded), you can still use this method. Then you wont really get proper lines.
           Instead you get chunks of binary data that you should concatenate as in

               my $binary = join "", $body->as_lines;

           If 'strip_sig' is set to a true value, the signature is stripped from the string.

       signature
           Returns the signature of a message as an array of lines. Trailing newlines are already
           removed.

           $body->error returns a string if no signature has been found.

       extract_urls
       extract_urls (unique => 1)
           Returns an array of hash-refs. Each hash-ref has two fields: 'url' and 'context' where
           context is the line in which the 'url' appeared.

           When calling it like $mail->extract_urls(unique => 1), duplicate URLs will be filtered
           out regardless of the 'context'. That's useful if you just want a list of all URLs
           that can be found in your mails.

           $body->error() will return a string if no URLs could be found within the body.

       quotes
           Returns a hash-ref of array-refs where the hash-keys are the several levels of
           quotation. Each array-element contains the paragraphs of this quotation-level as one
           string. Example:

                   my $quotes = $msg->body($msg->find_body)->quotes;
                   print $quotes->{1}->[0], "\n";
                   print $quotes->{0}->[0], "\n";

           This should print the first paragraph of the mail-body that has been quoted once and
           below that the paragraph that supposedly is the reply to this paragraph. Perhaps thus:

                   > I had been trying to work with the CGI module
                   > but I didn't yet fully understand it.

                   Ah, it is tricky. Have you read the CGI-FAQ that
                   comes with the module?

           Mark that empty lines will not be ignored and are part of the lines contained in the
           array of $quotes->{0}.

           So below is a little code-snippet that should, in most cases, restore the first 5
           paragraphs (containing quote-level 0 and 1) of an email:

                   for (0 .. 4) {
                           print $quotes->{0}->[$_];
                           print $quotes->{1}->[$_];
                   }

           Since quotes() considers an empty line between two quotes paragraphs as a paragraph in
           $quotes->{0}, the paragraphs with one quote and those with zero are balanced. That
           means:

           scalar @{$quotes->{0}} - DIFF == scalar @{$quotes->{1}} where DIFF is element of {-1,
           0, 1}.

           Unfortunately, quotes() can up to now only deal with '>' as quotation-marks.

VERSION

       This is version 0.55.

AUTHOR AND COPYRIGHT

       Tassilo von Parseval <tassilo.von.parseval@rwth-aachen.de>

       Copyright (c)  2001-2005 Tassilo von Parseval.  This program is free software; you can
       redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO