home *** CD-ROM | disk | FTP | other *** search
- =head1 NAME
-
- Mail::Field - Base class for manipulation of mail header fields
-
- =head1 INHERITANCE
-
- Mail::Field is extended by
- Mail::Field::AddrList
- Mail::Field::Date
- Mail::Field::Generic
-
- =head1 SYNOPSIS
-
- use Mail::Field;
-
- my $field = Mail::Field->new('Subject', 'some subject text');
- my $field = Mail::Field->new(Subject => 'some subject text');
- print $field->tag,": ",$field->stringify,"\n";
-
- my $field = Mail::Field->subject('some subject text');
-
- =head1 DESCRIPTION
-
- C<Mail::Field> creates and manipulates fields in MIME headers, collected
- within a L<Mail::Header|Mail::Header> object. Different field types have their
- own sub-class (extension), defining additional useful accessors to the
- field content.
-
- People are invited to merge their implementation to special fields into
- MailTools, to maintain a consistent set of packages and documentation.
-
- =head1 METHODS
-
- =head2 Constructors
-
- Mail::Field (and it's sub-classes) define several methods which return
- new objects. These can all be categorized as constructor.
-
- Mail::Field-E<gt>B<combine>(FIELDS)
-
- =over 4
-
- Take a LIST of C<Mail::Field> objects (which should all be of the same
- sub-class) and create a new object in that same class.
-
- =back
-
- Mail::Field-E<gt>B<extract>(TAG, HEAD [, INDEX ])
-
- =over 4
-
- Takes as arguments the tag name, a C<Mail::Head> object
- and optionally an index.
-
- If the index argument is given then C<extract> will retrieve the given tag
- from the C<Mail::Head> object and create a new C<Mail::Field> based object.
- I<undef> will be returned in the field does not exist.
-
- If the index argument is not given the the result depends on the context
- in which C<extract> is called. If called in a scalar context the result
- will be as if C<extract> was called with an index value of zero. If called
- in an array context then all tags will be retrieved and a list of
- C<Mail::Field> objects will be returned.
-
- =back
-
- Mail::Field-E<gt>B<new>(TAG [, STRING | OPTIONS])
-
- =over 4
-
- Create an object in the class which defines the field specified by
- the TAG argument.
-
- =back
-
- =head2 "Fake" constructors
-
- $obj-E<gt>B<create>(OPTIONS)
-
- =over 4
-
- This constructor is used internally with preprocessed field information.
- When called on an existing object, its original content will get
- replaced.
-
- =back
-
- $obj-E<gt>B<parse>
-
- =over 4
-
- Parse a field line.
-
- =back
-
- =head2 Accessors
-
- $obj-E<gt>B<set>(OPTIONS)
-
- =over 4
-
- Change the settings (the content, but then smart) of this field.
-
- =back
-
- $obj-E<gt>B<stringify>
-
- =over 4
-
- Returns the field as a string.
-
- =back
-
- $obj-E<gt>B<tag>
-
- Mail::Field-E<gt>B<tag>
-
- =over 4
-
- Return the tag (in the correct case) for this item. Well, actually any
- casing is OK, because the field tags are treated case-insentitive; however
- people have some preferences.
-
- =back
-
- =head2 Smart accessors
-
- $obj-E<gt>B<text>([STRING])
-
- =over 4
-
- Without arguments, the field is returned as L<stringify()|Mail::Field/"Accessors"> does. Otherwise,
- the STRING is parsed with L<parse()|Mail::Field/""Fake" constructors"> to replace the object's content.
-
- It is more clear to call either L<stringify()|Mail::Field/"Accessors"> or L<parse()|Mail::Field/""Fake" constructors"> directly, because
- this method does not add additional processing.
-
- =back
-
- =head1 DETAILS
-
- =head2 SUB-CLASS PACKAGE NAMES
-
- All sub-classes should be called Mail::Field::I<name> where I<name> is
- derived from the tag using these rules.
-
- =over 4
-
- =item *
-
- Consider a tag as being made up of elements separated by '-'
-
- =item *
-
- Convert all characters to lowercase except the first in each element, which
- should be uppercase.
-
- =item *
-
- I<name> is then created from these elements by using the first
- N characters from each element.
-
- =item *
-
- N is calculated by using the formula :-
-
- int((7 + #elements) / #elements)
-
- =item *
-
- I<name> is then limited to a maximum of 8 characters, keeping the first 8
- characters.
-
- =back
-
- For an example of this take a look at the definition of the
- C<_header_pkg_name()> subroutine in C<Mail::Field>
-
- =head1 DIAGNOSTICS
-
- Error: Undefined subroutine <method> called
-
- =over 4
-
- Mail::Field objects use autoloading to compile new functionality.
- Apparently, the mehod called is not implemented for the specific
- class of the field object.
-
- =back
-
- =head1 SEE ALSO
-
- This module is part of the MailTools distribution,
- F<http://perl.overmeer.net/mailtools/>.
-
- =head1 AUTHORS
-
- The MailTools bundle was developed by Graham Barr. Later, Mark
- Overmeer took over maintenance without development.
-
- Mail::Cap by Gisle Aas E<lt>aas@oslonett.noE<gt>.
- Mail::Field::AddrList by Peter Orbaek E<lt>poe@cit.dkE<gt>.
- Mail::Mailer and Mail::Send by Tim Bunce E<lt>Tim.Bunce@ig.co.ukE<gt>.
- For other contributors see ChangeLog.
-
- =head1 LICENSE
-
- Copyrights 1995-2000 Graham Barr E<lt>gbarr@pobox.comE<gt> and
- 2001-2007 Mark Overmeer E<lt>perl@overmeer.netE<gt>.
-
- This program is free software; you can redistribute it and/or modify it
- under the same terms as Perl itself.
- See F<http://www.perl.com/perl/misc/Artistic.html>
-
-