man 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 Mail::Internet 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 Mail::Message

$obj->dup Duplicate the message. The result will again be a Mail::Internet 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 CW"\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 Mail::Header 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 "CWFrom " 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 CW$ENV{HOME}/.signature.

$obj->bounce([RG-OBJECT|OPTIONS]) See Constructing a message in Mail::Message::Construct::Bounce

Mail::Message::Replace::MailInternet->build([MESSAGE|PART|BODY], CONTENT) See Constructing a message in Mail::Message::Construct::Build

Mail::Message::Replace::MailInternet->buildFromBody(BODY, [HEAD], HEADERS) See Constructing a message in Mail::Message::Construct::Build

$obj->extract(ARRAY or FILEHANDLE) Read header and body from an ARRAY or FILEHANDLE

$obj->forward(OPTIONS) See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardAttach(OPTIONS) See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardEncapsulate(OPTIONS) See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardInline(OPTIONS) See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardNo(OPTIONS) See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardPostlude See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardPrelude See Constructing a message in Mail::Message::Construct::Forward

$obj->forwardSubject(STRING) See Constructing a message in Mail::Message::Construct::Forward

$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 Mail::Message::Construct::Rebuild

$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 Mail::Internet'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 CWquote 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 CWtrue. . Subject STRING|CODE . To ADDRESSES . body BODY . group_reply BOOLEAN . header_template FILENAME|CWundef Read the return header from the template file. When this is explicitly set to CWundef, 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 Mail::Message::Construct::Reply

$obj->replySubject(STRING)

Mail::Message::Replace::MailInternet->replySubject(STRING) See Constructing a message in Mail::Message::Construct::Reply

$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 Mail::Message

$obj->isDummy See The message in Mail::Message

$obj->isPart See The message in Mail::Message

$obj->messageId See The message in Mail::Message

$obj->nntppost(OPTIONS) Send an NNTP message (newsgroup message), which is equivalent to Mail::Transport::NNTP or Mail::Message::send() with CWvia '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 CWtest TYPE is not supported.

$obj->size See The message in Mail::Message

$obj->toplevel See The message in Mail::Message

$obj->write([FILEHANDLE]) See The message in Mail::Message

The header

$obj->add(LINES) Add header lines, which simply calls CWMail::Message::Head::add() on the header for each specified LINE. The last added LINE is returned.

$obj->bcc See The header in Mail::Message

$obj->cc See The header in Mail::Message

$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 Mail::Message

$obj->delete(NAME, [INDEX]]) Delete the fields with the specified NAME. The deleted fields are returned. BE WARNED: if no NAME is specified, the CWdelete 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 Mail::Message

$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 Mail::Message

$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 Mail::Message

$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 Mail::Internet, but is there to be compatible with the CWhead 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 Mail::Message

$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 Mail::Message

$obj->study(FIELDNAME) See The header in Mail::Message

$obj->subject See The header in Mail::Message

$obj->tidy_headers No effect anymore (always performed).

$obj->timestamp See The header in Mail::Message

$obj->to See The header in Mail::Message

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 Mail::Internet, 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 CWbody method is overruled by the one which has a Mail::Internet compatible interface.

$obj->decoded(OPTIONS) See The body in Mail::Message

$obj->encode(OPTIONS) See The body in Mail::Message

$obj->isMultipart See The body in Mail::Message

$obj->isNested See The body in Mail::Message

$obj->parts(['ALL'|'ACTIVE'|'DELETED'|'RECURSE'|FILTER]) See The body in Mail::Message

$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 CWsmtp, 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 Mail::Internet 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 Mail::Message

$obj->isDeleted See Flags in Mail::Message

$obj->isModified See Flags in Mail::Message

$obj->label(LABEL|PAIRS) See Flags in Mail::Message

$obj->labels See Flags in Mail::Message

$obj->labelsToStatus See Flags in Mail::Message

$obj->modified([BOOLEAN]) See Flags in Mail::Message

$obj->statusToLabels See Flags in Mail::Message

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 CWContent-Length header field is removed and lines in the body which start with CWFrom are escaped with an >.

$obj->file See The whole message as text in Mail::Message::Construct::Text

$obj->lines See The whole message as text in Mail::Message::Construct::Text

$obj->printStructure([FILEHANDLE|undef],[INDENT]) See The whole message as text in Mail::Message::Construct::Text

$obj->string See The whole message as text in Mail::Message::Construct::Text

The nasty bits

$obj->isa(CLASS)

Mail::Message::Replace::MailInternet->isa(CLASS) Of course, the CWisa() class inheritance check should not see our nasty trick.

Internals

$obj->clonedFrom See Internals in Mail::Message

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 Mail::Message

$obj->readBody(PARSER, HEAD [, BODYTYPE]) See Internals in Mail::Message

$obj->readFromParser(PARSER, [BODYTYPE]) See Internals in Mail::Message

$obj->readHead(PARSER [,CLASS]) See Internals in Mail::Message

$obj->recursiveRebuildPart(PART, OPTIONS) See Internals in Mail::Message::Construct::Rebuild

$obj->storeBody(BODY) See Internals in Mail::Message

$obj->takeMessageId([STRING]) See Internals in Mail::Message

Error handling

$obj->AUTOLOAD See METHODS in Mail::Message::Construct

$obj->addReport(OBJECT) See Error handling in Mail::Reporter

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

Mail::Message::Replace::MailInternet->defaultTrace([LEVEL]|[LOGLEVEL, TRACELEVEL]|[LEVEL, CALLBACK]) See Error handling in Mail::Reporter

$obj->errors See Error handling in Mail::Reporter

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

Mail::Message::Replace::MailInternet->log([LEVEL [,STRINGS]]) See Error handling in Mail::Reporter

$obj->logPriority(LEVEL)

Mail::Message::Replace::MailInternet->logPriority(LEVEL) See Error handling in Mail::Reporter

$obj->logSettings See Error handling in Mail::Reporter

$obj->notImplemented See Error handling in Mail::Reporter

$obj->report([LEVEL]) See Error handling in Mail::Reporter

$obj->reportAll([LEVEL]) See Error handling in Mail::Reporter

$obj->shortSize([VALUE])

Mail::Message::Replace::MailInternet->shortSize([VALUE]) See Error handling in Mail::Message

$obj->shortString See Error handling in Mail::Message

$obj->trace([LEVEL]) See Error handling in Mail::Reporter

$obj->warnings See Error handling in Mail::Reporter

Cleanup

$obj->DESTROY See Cleanup in Mail::Message

$obj->destruct See Cleanup in Mail::Message

$obj->inGlobalDestruction See Cleanup in Mail::Reporter

DIAGNOSTICS

Error: Cannot include forward source as CW$include.

Unknown alternative for the forward(include). Valid choices are CWNO, CWINLINE, CWATTACH, and CWENCAPSULATE.

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 CW$package does not implement CW$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: bounce requires To, Cc, or Bcc

The message bounce() method forwards a received message off to someone else without modification; you must specified it's new destination. If you have the urge not to specify any destination, you probably are looking for reply(). When you wish to modify the content, use forward().

Error: forwardAttach requires a preamble object

Error: forwardEncapsulate requires a preamble object

Error: no rebuild rule CW$name defined.

DETAILS

REFERENCES

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

COPYRIGHTS

Distribution version 2.063. 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.