=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 creates and manipulates fields in MIME headers, collected within a L 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-EB(FIELDS) =over 4 Take a LIST of C objects (which should all be of the same sub-class) and create a new object in that same class. =back Mail::Field-EB(TAG, HEAD [, INDEX ]) =over 4 Takes as arguments the tag name, a C object and optionally an index. If the index argument is given then C will retrieve the given tag from the C object and create a new C based object. I 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 is called. If called in a scalar context the result will be as if C 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 objects will be returned. =back Mail::Field-EB(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-EB(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-EB =over 4 Parse a field line. =back =head2 Accessors $obj-EB(OPTIONS) =over 4 Change the settings (the content, but then smart) of this field. =back $obj-EB =over 4 Returns the field as a string. =back $obj-EB Mail::Field-EB =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-EB([STRING]) =over 4 Without arguments, the field is returned as L does. Otherwise, the STRING is parsed with L to replace the object's content. It is more clear to call either L or L 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 where I 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 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 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 =head1 DIAGNOSTICS Error: Undefined subroutine 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. =head1 AUTHORS The MailTools bundle was developed by Graham Barr. Later, Mark Overmeer took over maintenance without development. Mail::Cap by Gisle Aas Eaas@oslonett.noE. Mail::Field::AddrList by Peter Orbaek Epoe@cit.dkE. Mail::Mailer and Mail::Send by Tim Bunce ETim.Bunce@ig.co.ukE. For other contributors see ChangeLog. =head1 LICENSE Copyrights 1995-2000 Graham Barr Egbarr@pobox.comE and 2001-2007 Mark Overmeer Eperl@overmeer.netE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F