GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  MAIL::MBOXPARSER::MAIL::BODY (3)

.ds Aq ’

NAME

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

CONTENTS

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

<B>as_string ([strip_sig => 1])B> 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.

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

<B>NOTE:B> 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.

<B>signatureB> 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.

<B>extract_urlsB>
<B>extract_urls (unique => 1)B> 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.

<B>quotesB> 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 didnt 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

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 MBOXPARSER::MAIL::BODY (3) 2005-12-08

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.