The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mail::Message::Body::Construct - adds functionality to Mail::Message::Body

CLASS INHERITANCE

Mail::Message::Body has extra code in Mail::Message::Body::Construct has extra code in Mail::Message::Body::Encode

Mail::Message::Body is a Mail::Reporter

Mail::Message::Body is extended by Mail::Message::Body::File Mail::Message::Body::Lines Mail::Message::Body::Multipart Mail::Message::Body::Nested Mail::Message::Body::String

Mail::Message::Body is realized by Mail::Message::Body::Delayed

SYNOPSIS

DESCRIPTION

This package adds complex functionality to the Mail::Message::Body class. This functions less often used, so many programs will not compile this package.

METHODS

Initiation

new OPTIONS

See Mail::Message::Body::new()

The Body

clone

See Mail::Message::Body::clone()

decoded OPTIONS

See Mail::Message::Body::decoded()

isDelayed

See Mail::Message::Body::isDelayed()

isMultipart

See Mail::Message::Body::isMultipart()

isNested

See Mail::Message::Body::isNested()

message [MESSAGE]

See Mail::Message::Body::message()

modified [BOOL]

See Mail::Message::Body::modified()

See Mail::Message::Body::print()

About the Payload

charset

See Mail::Message::Body::charset()

checked [BOOLEAN]

See Mail::Message::Body::checked()

disposition [STRING|FIELD]

See Mail::Message::Body::disposition()

eol ['CR'|'LF'|'CRLF'|'NATIVE']

See Mail::Message::Body::eol()

isBinary

See Mail::Message::Body::Encode::isBinary()

isText

See Mail::Message::Body::Encode::isText()

mimeType

See Mail::Message::Body::mimeType()

nrLines

See Mail::Message::Body::nrLines()

size

See Mail::Message::Body::size()

transferEncoding [STRING|FIELD]

See Mail::Message::Body::transferEncoding()

type

See Mail::Message::Body::type()

Access to the Payload

file

See Mail::Message::Body::file()

lines

See Mail::Message::Body::lines()

string

See Mail::Message::Body::string()

Constructing a Body

addTransferEncHandler NAME, CLASS|OBJECT

See Mail::Message::Body::Encode::addTransferEncHandler()

attach MESSAGES, OPTIONS

Make a multipart containing this body and the specified MESSAGES. The options are passed to the constructor of the multi-part body. If you need more control, create the multi-part body yourself. At least take a look at Mail::Message::Body::Multipart.

The message-parts will be coerced into a Mail::Message::Part, so you may attach Mail::Internet or MIME::Entity objects if you want --see Mail::Message::coerce(). A new body with attached messages is returned.

Examples:

 my $pgpkey = Mail::Message::Body::File->new(file => '.pgp');
 my $msg    = Mail::Message->buildFromBody(
    $message->decoded->attach($pgpkey));

 my $entity  = MIME::Entity->new;
 my $multi   = $msg->body->attach($entity);
 # The last message of the $multi multiparted body is the coerced $entity.
check

See Mail::Message::Body::Encode::check()

concatenate COMPONENTS

Concatenate a list of elements into one new body. The encoding is defined by the body where this method is called upon (and which does not need to be included in the result).

Specify a list of COMPONENTS. Each component can be

  • a message (Mail::Message), the body of the message is used,

  • a body (Mail::Message::Body),

  • undef, which will be skipped,

  • a scalar, which is split on new-lines,

  • an array of scalars, each providing one line.

Examples:

 # all arguments are Mail::Message::Body's.
 my $sum = $body->concatenate($preamble, $body, $epilogue, "--\n" , $sig);
encode OPTIONS

See Mail::Message::Body::Encode::encode()

encoded

See Mail::Message::Body::Encode::encoded()

foreachLine CODE

Create a new body by performing an action on each of its lines. If none of the lines change, the current body will be returned, otherwise a new body is created of the same type as the current.

The CODE refers to a subroutine which is called, where $_ contains body's original line. DO NOT CHANGE $_!!! The result of the routine is taken as new line. When the routine returns undef, the line will be skipped.

Examples:

 my $content  = $msg->decoded;
 my $reply    = $content->foreachLine( sub { '> '.$_ } );
 my $rev      = $content->foreachLine( sub {reverse} );

 sub filled() { length $_ > 1 ? $_ : undef }
 my $nonempty = $content->foreachLine( \&filled );

 my $wrong    = $content->foreachLine( sub {s/a/A/} );  # WRONG!!!
 my $right    = $content->foreachLine( sub {(my $x=$_) =~ s/a/A/} );
getTransferEncHandler TYPE

See Mail::Message::Body::Encode::getTransferEncHandler()

stripSignature OPTIONS

Strip the signature from the body. The body must already be decoded otherwise the wrong lines may get stripped.

The signature is added by the sender to tell about him- or herself. It is superfluous in some situations, for instance if you want to create a reply to the person's message you do not need to include that signature.

stripSignature returns the stripped version body, and in list context also the signature, encapsulated in its own body object. If the body had no signature, the original body object is returned, and undef for the signature body. The signature separator is the first line of the returned signature body.

 OPTION               DEFAULT
 max_lines            10
 pattern              qr/^--\s?$/
 result_type          <same as current>
max_lines => INTEGER|undef

The maximum number of lines which can be the length of a signature. Specify undef to remove the limit.

pattern => REGEX|STRING|CODE

Which pattern defines the line which indicates the separator between the message and the signature. In case of a STRING, this is matched to the beginning of the line, and REGEX is a full regular expression.

In case of CODE, each line (from last to front) is passed to the specified subroutine as first argument. The subroutine must return TRUE when the separator is found.

result_type => CLASS

The type of body to be created for the stripped body (and maybe also to contain the stripped signature)

Examples:

 my $stripped = $message->decoded;
 my $stripped = $body->decoded;
 my ($stripped, $signature) = $message->decoded
    ->stripSignature(max_lines => 5, pattern => '-*-*-');
unify BODY

See Mail::Message::Body::Encode::unify()

Reading and Writing [internals]

AUTOLOAD

See Mail::Message::Body::AUTOLOAD()

fileLocation [BEGIN,END]

See Mail::Message::Body::fileLocation()

load

See Mail::Message::Body::load()

moveLocation [DISTANCE]

See Mail::Message::Body::moveLocation()

read PARSER, HEAD, BODYTYPE [,CHARS [,LINES]]

See Mail::Message::Body::read()

Logging and Tracing

defaultTrace [LEVEL, [LEVEL]

See Mail::Reporter::defaultTrace()

errors

See Mail::Reporter::errors()

log [LEVEL [,STRINGS]]

See Mail::Reporter::log()

report [LEVEL]

See Mail::Reporter::report()

reportAll [LEVEL]

See Mail::Reporter::reportAll()

trace [LEVEL]

See Mail::Reporter::trace()

warnings

See Mail::Reporter::warnings()

Other Methods

DESTROY

See Mail::Reporter::DESTROY()

inGlobalDestruction

See Mail::Reporter::inGlobalDestruction()

logPriority LEVEL

See Mail::Reporter::logPriority()

logSettings

See Mail::Reporter::logSettings()

notImplemented

See Mail::Reporter::notImplemented()

SEE ALSO

A good start to read is Mail::Box-Overview. More documentation and a mailinglist are available from the project's website at http://perl.overmeer.net/mailbox/.

AUTHOR

Mark Overmeer (mark@overmeer.net) with the help of many.

VERSION

This code is beta, version 2.025.

Copyright (c) 2001-2002 Mark Overmeer. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.