Mail::Message::Replace::MailInternet - fake Mail::Internet


NAME

Mail::Message::Replace::MailInternet - fake Mail::Internet


INHERITANCE

 Mail::Message::Replace::MailInternet
   is a Mail::Message
   is a Mail::Reporter


SYNOPSIS

 !!! BETA !!!
 # change
 use Mail::Internet;
 # into
 use Mail::Message::Replace::MailInternet;
 # in existing code, and the code should still work, but
 # with the Mail::Message features.


DESCRIPTION

This module is a wrapper around a Mail::Message, which simulates a the Mail::Internet manpage object. The name-space of that module is hijacked and many methods are added.

Most methods will work without any change, but you may need to have a look at your smtpsend() and send() calls.


OVERLOADED


METHODS

Constructors

$obj->clone(OPTIONS)

See Constructors in the Mail::Message manpage

$obj->dup

Duplicate the message. The result will again be a the Mail::Internet manpage compatible object.

$obj->empty

Remove all data from this object. Very dangerous!

Mail::Message::Replace::MailInternet->new([ARG], [OPTIONS])

 Option      Defined in       Default                                                                 
 Body                         C<undef>                                                                
 FoldLength                   79                                                                      
 Header                       C<undef>                                                                
 MailFrom                     C<'KEEP'>                                                               
 Modify                       0                                                                       
 body        L<Mail::Message>  undef                                                                   
 body_type   L<Mail::Message>  L<Mail::Message::Body::Lines|Mail::Message::Body::Lines>                
 deleted     L<Mail::Message>  <false>                                                                 
 field_type  L<Mail::Message>  undef                                                                   
 head        L<Mail::Message>  undef                                                                   
 head_type   L<Mail::Message>  L<Mail::Message::Replace::MailHeader|Mail::Message::Replace::MailHeader>
 labels      L<Mail::Message>  {}                                                                      
 log         L<Mail::Reporter>  C<'WARNINGS'>                                                           
 messageId   L<Mail::Message>  undef                                                                   
 modified    L<Mail::Message>  <false>                                                                 
 trace       L<Mail::Reporter>  C<'WARNINGS'>                                                           
 trusted     L<Mail::Message>  <false>

. Body ARRAY-OF-LINES

Array of "\n" terminated lines. If not specified, the lines will be read from ARG.

. FoldLength INTEGER

Number of characters permitted on any refolded header line. Passed to Mail::Message::Replace::MailHeader::new(FoldLength).

. Header OBJECT

The the Mail::Header manpage object, which is passed here, is a fake one as well... It is translated into a new(head). If not given, the header will be parsed from the ARG.

. MailFrom 'IGNORE'|'ERROR'|'COERCE'|'KEEP'

What to do with leading ``From '' lines in e-mail data. Passed to Mail::Message::Replace::MailHeader::new(MailFrom).

. Modify BOOLEAN

Whether to re-fold all the incoming fields. Passed to Mail::Message::Replace::MailHeader::new(Modify).

. body OBJECT

. body_type CLASS

. deleted BOOLEAN

. field_type CLASS

. head OBJECT

. head_type CLASS

. labels ARRAY|HASH

. log LEVEL

. messageId STRING

. modified BOOLEAN

. trace LEVEL

. trusted BOOLEAN

Example: replace traditional Mail::Internet by this wrapper

  # was
  use Mail::Internet;
  my $mi = Mail::Internet->new(@options);
  # becomes
  use Mail::Message::Replace::MailInternet;
  my $mi = Mail::Internet->new(@options);

Attributes

$obj->MailFrom([STRING])

Your email address.

Constructing a message

$obj->add_signature([FILENAME])

Replaced by sign(), but still usable. FILENAME is the file which contains the signature, which defaults to $ENV{HOME}/.signature.

$obj->bounce([RG-OBJECT|OPTIONS])

See Constructing a message in the Mail::Message::Construct::Bounce manpage

Mail::Message::Replace::MailInternet->build([MESSAGE|PART|BODY], CONTENT)

See Constructing a message in the Mail::Message::Construct::Build manpage

Mail::Message::Replace::MailInternet->buildFromBody(BODY, [HEAD], HEADERS)

See Constructing a message in the Mail::Message::Construct::Build manpage

$obj->extract(ARRAY or FILEHANDLE)

Read header and body from an ARRAY or FILEHANDLE

$obj->forward(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardAttach(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardEncapsulate(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardInline(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardNo(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardPostlude

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardPrelude

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->forwardSubject(STRING)

See Constructing a message in the Mail::Message::Construct::Forward manpage

$obj->read(ARRAY|FILEHANDLE, OPTIONS)

Mail::Message::Replace::MailInternet->read(ARRAY|FILEHANDLE, OPTIONS)

Read header and body from the specified ARRAY or FILEHANDLE. When used as object method, Mail::Message::read() is called, to be MailBox compliant. As class method, the Mail::Internet compatible read is called. OPTIONS are only available in the first case.

 Option               Defined in       Default 
 body_type            L<Mail::Message::Construct::Read>  C<undef>
 strip_status_fields  L<Mail::Message::Construct::Read>  <true>

. body_type CLASS

. strip_status_fields BOOLEAN

$obj->read_body(ARRAY|FILEHANDLE)

Read only the message's body from the ARRAY or FILEHANDLE.

$obj->read_header(ARRAY|FILEHANDLE)

Read only the message's header from the ARRAY or FILEHANDLE

$obj->rebuild(OPTIONS)

See Constructing a message in the Mail::Message::Construct::Rebuild manpage

$obj->reply(OPTIONS)

BE WARNED: the main job for creating a reply is done by Mail::Message::reply(), which may produce a result which is compatible, but may be different from the Mail::Internet manpage's version.

 Option           Defined in       Default                                                                   
 Bcc              L<Mail::Message::Construct::Reply>  undef                                                                     
 Cc               L<Mail::Message::Construct::Reply>  <'cc' in current>                                                         
 Exclude                           []                                                                        
 From             L<Mail::Message::Construct::Reply>  <'to' in current>                                                         
 Inline                            E<gt>                                                                     
 Keep                              []                                                                        
 Message-ID       L<Mail::Message::Construct::Reply>  <uniquely generated>                                                      
 ReplyAll                          <false>                                                                   
 Subject          L<Mail::Message::Construct::Reply>  L<replySubject()|Mail::Message::Construct::Reply/"Constructing a message">
 To               L<Mail::Message::Construct::Reply>  <sender in current>                                                       
 body             L<Mail::Message::Construct::Reply>  undef                                                                     
 group_reply      L<Mail::Message::Construct::Reply>  <true>                                                                    
 header_template                   C<$ENV{HOME}/.mailhdr>                                                    
 include          L<Mail::Message::Construct::Reply>  C<'INLINE'>                                                               
 max_signature    L<Mail::Message::Construct::Reply>  C<10>                                                                     
 message_type     L<Mail::Message::Construct::Reply>  L<Mail::Message|Mail::Message>                                            
 postlude         L<Mail::Message::Construct::Reply>  undef                                                                     
 prelude          L<Mail::Message::Construct::Reply>  undef                                                                     
 quote            L<Mail::Message::Construct::Reply>  'E<gt> '                                                                  
 signature        L<Mail::Message::Construct::Reply>  undef                                                                     
 strip_signature  L<Mail::Message::Construct::Reply>  C<qr/^--\s/>

. Bcc ADDRESSES

. Cc ADDRESSES

. Exclude ARRAY-OF-NAMES

Remove the fields witht the specified names from the produced reply message.

. From ADDRESSES

. Inline STRING

Quotation STRING, which is translated into reply(quote). The normal default of quote is ``> '', in stead of ``>''.

. Keep ARRAY-OF-NAMES

Copy all header fields with the specified NAMES from the source to the reply message.

. Message-ID STRING

. ReplyAll BOOLEAN

Reply to the group? Translated into reply(group_reply), which has as default the exact oposite of this option, being true.

. Subject STRING|CODE

. To ADDRESSES

. body BODY

. group_reply BOOLEAN

. header_template FILENAME|undef

Read the return header from the template file. When this is explicitly set to undef, or the file does not exist, then a header will be created.

. include 'NO'|'INLINE'|'ATTACH'

. max_signature INTEGER

. message_type CLASS

. postlude BODY|LINES

. prelude BODY|LINES

. quote CODE|STRING

. signature BODY|MESSAGE

. strip_signature REGEXP|STRING|CODE

$obj->replyPrelude([STRING|FIELD|ADDRESS|ARRAY-OF-THINGS])

See Constructing a message in the Mail::Message::Construct::Reply manpage

$obj->replySubject(STRING)

Mail::Message::Replace::MailInternet->replySubject(STRING)

See Constructing a message in the Mail::Message::Construct::Reply manpage

$obj->sign(OPTIONS)

Add a signature (a few extra lines) to the message.

 Option     Defined in       Default 
 File                        C<undef>
 Signature                   ''

. File FILENAME

Specifies a filename where the signature is in.

. Signature STRING|ARRAY-OF-LINES

The signature in memory.

The message

$obj->container

See The message in the Mail::Message manpage

$obj->isDummy

See The message in the Mail::Message manpage

$obj->isPart

See The message in the Mail::Message manpage

$obj->messageId

See The message in the Mail::Message manpage

$obj->nntppost(OPTIONS)

Send an NNTP message (newsgroup message), which is equivalent to Mail::Transport::NNTP or Mail::Message::send() with via 'nntp'.

 Option  Defined in       Default           
 Debug                    <false>           
 Host                     <from Net::Config>
 Port                     119

. Debug BOOLEAN

. Host HOSTNAME

. Port INTEGER

$obj->print([FILEHANDLE])

Prints the whole message to the specified FILEHANDLE, which default to STDOUT. This calls Mail::Message::print().

$obj->send(TYPE, OPTIONS)

Send via Mail Transfer Agents (MUA). These will be handled by various Mail::Transport::Send extensions. The test TYPE is not supported.

$obj->size

See The message in the Mail::Message manpage

$obj->toplevel

See The message in the Mail::Message manpage

$obj->write([FILEHANDLE])

See The message in the Mail::Message manpage

The header

$obj->add(LINES)

Add header lines, which simply calls Mail::Message::Head::add() on the header for each specified LINE. The last added LINE is returned.

$obj->bcc

See The header in the Mail::Message manpage

$obj->cc

See The header in the Mail::Message manpage

$obj->clean_header

Not to be used, replaced by header().

$obj->combine(TAG, [WITH])

Not implemented, because I see no use for it.

$obj->date

See The header in the Mail::Message manpage

$obj->delete(NAME, [INDEX]])

Delete the fields with the specified NAME. The deleted fields are returned.

BE WARNED: if no NAME is specified, the delete is interpreted as the deletion of the message in a folder, so Mail::Box::Message::delete() will be called. This may have no negative effect at all...

Calls Mail::Message::Replace::MailHeader::delete()

$obj->destinations

See The header in the Mail::Message manpage

$obj->fold([LENGTH])

Fold all the fields to a certain maximum LENGTH. Implemented by Mail::Message::Replace::MailHeader::fold()

$obj->fold_length([[TAG], LENGTH])

Set the maximum line LENGTH. TAG is ignored. Implemented by Mail::Message::Replace::MailHeader::fold_length()

$obj->from

See The header in the Mail::Message manpage

$obj->get(NAME, [INDEX])

Get all the header fields with the specified NAME. In scalar context, only the first fitting NAME is returned. Even when only one NAME is specified, multiple lines may be returned: some fields appear more than once in a header. Calls Mail::Message::Replace::MailHeader::get()

$obj->guessTimestamp

See The header in the Mail::Message manpage

$obj->head([HEAD])

Returns the head of the message, or creates an empty one if none is defined. The HEAD argument, which sets the header, is not available for the Mail::Internet manpage, but is there to be compatible with the head method of Mail::Message.

$obj->header([ARRAY])

Optionally reads a header from the ARRAY, and then returns those fields as array-ref nicely folded. Implemented by Mail::Message::Replace::MailHeader::header()

$obj->nrLines

See The header in the Mail::Message manpage

$obj->print_header(FILEHANDLE)

Calls Mail::Message::Head::Complete::print().

$obj->replace(TAG, LINE, [INDEX])

Adds LINES to the header, but removes fields with the same name if they already exist. Calls Mail::Message::Replace::MailHeader::replace()

$obj->sender

See The header in the Mail::Message manpage

$obj->study(FIELDNAME)

See The header in the Mail::Message manpage

$obj->subject

See The header in the Mail::Message manpage

$obj->tidy_headers

No effect anymore (always performed).

$obj->timestamp

See The header in the Mail::Message manpage

$obj->to

See The header in the Mail::Message manpage

The body

$obj->body([ARRAY-OF-LINES|LIST-OF-LINES])

Returns an array of lines, representing the body. With arguments, a new body will be created. In the Mail::Internet manpage, the body is not an object but a simple array.

BE WARNED: this overrules the Mail::Message::body() method, which may cause some confusion. Use bodyObject() to get access to that body's data.

$obj->bodyObject([BODY])

Calls Mail::Message::body(), because that body method is overruled by the one which has a the Mail::Internet manpage compatible interface.

$obj->decoded(OPTIONS)

See The body in the Mail::Message manpage

$obj->encode(OPTIONS)

See The body in the Mail::Message manpage

$obj->isMultipart

See The body in the Mail::Message manpage

$obj->isNested

See The body in the Mail::Message manpage

$obj->parts(['ALL'|'ACTIVE'|'DELETED'|'RECURSE'|FILTER])

See The body in the Mail::Message manpage

$obj->print_body([FILEHANDLE])

Prints the body to the specified FILEHANDLE, which defaults to STDOUT. This calls Mail::Message::Body::print().

$obj->remove_sig([NRLINES])

Remove the signature of a message with a maximum of NRLINES lines, which defaults to 10. The work is done on the decoded body content, by Mail::Message::Body::stripSignature().

$obj->smtpsend(OPTIONS)

This method is calling Mail::Message::send() via smtp, which is implemented in Mail::Transport::SMTP. The implementation is slightly different, so this method is not 100% compliant.

 Option    Defined in       Default                               
 Debug                      <false>                               
 Hello                      <helo_domain from Net::Config>        
 Host                       C<$ENV{SMTPHOSTS} or from Net::Config>
 MailFrom                   C<$ENV{MAILADDRESS}> or $ENV{USER}    
 Port                       25

. Debug BOOLEAN

. Hello STRING

. Host HOSTNAME

Only the first detected HOSTNAME is taken, so differs from the original implementation.

. MailFrom STRING

Your e-mail address. This simulated the Mail::Internet manpage object does not try to create an e-mail address from the sendmail configuration file, because that is generally a bad idea in environments with virtual hosts, as we have now-adays.

. Port INTEGER

$obj->tidy_body

Removes blank lines from begin and end of the body.

Flags

$obj->deleted([BOOLEAN])

See Flags in the Mail::Message manpage

$obj->isDeleted

See Flags in the Mail::Message manpage

$obj->isModified

See Flags in the Mail::Message manpage

$obj->label(LABEL|PAIRS)

See Flags in the Mail::Message manpage

$obj->labels

See Flags in the Mail::Message manpage

$obj->labelsToStatus

See Flags in the Mail::Message manpage

$obj->modified([BOOLEAN])

See Flags in the Mail::Message manpage

$obj->statusToLabels

See Flags in the Mail::Message manpage

The whole message as text

$obj->as_mbox_string

Returns the whole message as one string, which can be included in an MBOX folder (while not using Mail::Box::Mbox). The Content-Length header field is removed and lines in the body which start with From are escaped with an >.

$obj->file

See The whole message as text in the Mail::Message::Construct::Text manpage

$obj->lines

See The whole message as text in the Mail::Message::Construct::Text manpage

$obj->printStructure([FILEHANDLE|undef],[INDENT])

See The whole message as text in the Mail::Message::Construct::Text manpage

$obj->string

See The whole message as text in the Mail::Message::Construct::Text manpage

The nasty bits

$obj->isa(CLASS)

Mail::Message::Replace::MailInternet->isa(CLASS)

Of course, the isa() class inheritance check should not see our nasty trick.

Internals

$obj->clonedFrom

See Internals in the Mail::Message manpage

Mail::Message::Replace::MailInternet->coerce(MESSAGE)

Coerce (adapt type) of the specified MESSAGE (anything Mail::Message::coerce() accepts) into an Mail::Internet simulating object.

$obj->isDelayed

See Internals in the Mail::Message manpage

$obj->readBody(PARSER, HEAD [, BODYTYPE])

See Internals in the Mail::Message manpage

$obj->readFromParser(PARSER, [BODYTYPE])

See Internals in the Mail::Message manpage

$obj->readHead(PARSER [,CLASS])

See Internals in the Mail::Message manpage

$obj->recursiveRebuildPart(PART, OPTIONS)

See Internals in the Mail::Message::Construct::Rebuild manpage

$obj->storeBody(BODY)

See Internals in the Mail::Message manpage

$obj->takeMessageId([STRING])

See Internals in the Mail::Message manpage

Error handling

$obj->AUTOLOAD

See METHODS in the Mail::Message::Construct manpage

$obj->addReport(OBJECT)

See Error handling in the Mail::Reporter manpage

$obj->defaultTrace([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK])

Mail::Message::Replace::MailInternet->defaultTrace([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK])

See Error handling in the Mail::Reporter manpage

$obj->errors

See Error handling in the Mail::Reporter manpage

$obj->log([LEVEL [,STRINGS]])

Mail::Message::Replace::MailInternet->log([LEVEL [,STRINGS]])

See Error handling in the Mail::Reporter manpage

$obj->logPriority(LEVEL)

Mail::Message::Replace::MailInternet->logPriority(LEVEL)

See Error handling in the Mail::Reporter manpage

$obj->logSettings

See Error handling in the Mail::Reporter manpage

$obj->notImplemented

See Error handling in the Mail::Reporter manpage

$obj->report([LEVEL])

See Error handling in the Mail::Reporter manpage

$obj->reportAll([LEVEL])

See Error handling in the Mail::Reporter manpage

$obj->shortSize([VALUE])

Mail::Message::Replace::MailInternet->shortSize([VALUE])

See Error handling in the Mail::Message manpage

$obj->shortString

See Error handling in the Mail::Message manpage

$obj->trace([LEVEL])

See Error handling in the Mail::Reporter manpage

$obj->warnings

See Error handling in the Mail::Reporter manpage

Cleanup

$obj->DESTROY

See Cleanup in the Mail::Message manpage

$obj->destruct

See Cleanup in the Mail::Message manpage

$obj->inGlobalDestruction

See Cleanup in the Mail::Reporter manpage


DIAGNOSTICS

Error: Cannot include forward source as $include.

Unknown alternative for the forward(include). Valid choices are NO, INLINE, ATTACH, and ENCAPSULATE.

Error: Mail::Internet does not support this kind of data

The ARGS data can only be a file handle or an ARRAY. Other data types are not supported (see read() if you want to have more).

Error: No address to create forwarded to.

If a forward message is created, a destination address must be specified.

Error: Only build() Mail::Message's; they are not in a folder yet

You may wish to construct a message to be stored in a some kind of folder, but you need to do that in two steps. First, create a normal Mail::Message, and then add it to the folder. During this Mail::Box::addMessage() process, the message will get coerce()-d into the right message type, adding storage information and the like.

Error: Package $package does not implement $method.

Fatal error: the specific package (or one of its superclasses) does not implement this method where it should. This message means that some other related classes do implement this method however the class at hand does not. Probably you should investigate this and probably inform the author of the package.

Error: forwardAttach requires a preamble object

Error: forwardEncapsulate requires a preamble object

Error: no rebuild rule $name defined.


DETAILS


REFERENCES

See the MailBox website at http://perl.overmeer.net/mailbox/ for more details.


COPYRIGHTS

Distribution version 2.059. Written by Mark Overmeer (mark@overmeer.net) See the ChangeLog for other contributors.

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

 Mail::Message::Replace::MailInternet - fake Mail::Internet