=encoding utf8 =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. =over 4 =item Mail::Field-EB($fields) Take a LIST of C objects (which should all be of the same sub-class) and create a new object in that same class. =item Mail::Field-EB( $tag, $head [, $index ] ) 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 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. =item Mail::Field-EB( $tag [, STRING | %options] ) Create an object in the class which defines the field specified by the $tag argument. =back =head2 "Fake" constructors =over 4 =item $obj-EB(%options) This constructor is used internally with preprocessed field information. When called on an existing object, its original content will get replaced. =item $obj-EB() Parse a field line. =back =head2 Accessors =over 4 =item $obj-EB(%options) Change the settings (the content, but then smart) of this field. =item $obj-EB() Returns the field as a string. =item $obj-EB() =item Mail::Field-EB() Return the tag (in the correct case) for this item. Well, actually any casing is OK, because the field tags are treated case-insensitive; however people have some preferences. =back =head2 Smart accessors =over 4 =item $obj-EB( [STRING] ) 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 =over 4 =item Error: Undefined subroutine called Mail::Field objects use autoloading to compile new functionality. Apparently, the method 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 commitment to further 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-2017 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