PK       ! Ni8  8    Generic.podnu [        =encoding utf8

=head1 NAME

Mail::Field::Generic - implementation for inspecific fields

=head1 INHERITANCE

 Mail::Field::Generic
   is a Mail::Field

=head1 SYNOPSIS

 use Mail::Field;
 my $field = Mail::Field->new('Subject', 'some subject text');
 my $field = Mail::Field->new(subject => 'some subject text');

=head1 DESCRIPTION

A generic implementation for header fields without own
implementation. This is fine for fields like C<Subject>, C<X-Mailer>,
etc., where the field holds only a string of no particular
importance/format.

Extends L<"DESCRIPTION" in Mail::Field|Mail::Field/"DESCRIPTION">.
 
=head1 METHODS

Extends L<"METHODS" in Mail::Field|Mail::Field/"METHODS">.
 
=head2 Constructors

Extends L<"Constructors" in Mail::Field|Mail::Field/"Constructors">.
 
=over 4

=item Mail::Field::Generic-E<gt>B<combine>($fields)

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::Generic-E<gt>B<extract>( $tag, $head [, $index ] )

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::Generic-E<gt>B<new>( $tag [, STRING | %options] )

Inherited, see L<Mail::Field/"Constructors">

=back

=head2 "Fake" constructors

Extends L<""Fake" constructors" in Mail::Field|Mail::Field/""Fake" constructors">.
 
=over 4

=item $obj-E<gt>B<create>(%options)

 -Option--Default
  Text    ''

=over 2

=item Text => STRING

=back

=item $obj-E<gt>B<parse>( [STRING] )

Set the new text, which is empty when no STRING is provided.

=back

=head2 Accessors

Extends L<"Accessors" in Mail::Field|Mail::Field/"Accessors">.
 
=over 4

=item $obj-E<gt>B<set>(%options)

Inherited, see L<Mail::Field/"Accessors">

=item $obj-E<gt>B<stringify>()

Inherited, see L<Mail::Field/"Accessors">

=item $obj-E<gt>B<tag>()

=item Mail::Field::Generic-E<gt>B<tag>()

Inherited, see L<Mail::Field/"Accessors">

=back

=head2 Smart accessors

Extends L<"Smart accessors" in Mail::Field|Mail::Field/"Smart accessors">.
 
=over 4

=item $obj-E<gt>B<text>( [STRING] )

Inherited, see L<Mail::Field/"Smart accessors">

=back

=head1 DETAILS

Extends L<"DETAILS" in Mail::Field|Mail::Field/"DETAILS">.
 
=head1 DIAGNOSTICS

=over 4

=item Error: Undefined subroutine <method> 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<http://perl.overmeer.net/mailtools/>.

=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 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-2017 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>

PK       ! F8  8    AddrList.podnu [        =encoding utf8

=head1 NAME

Mail::Field::AddrList - object representation of e-mail address lists

=head1 INHERITANCE

 Mail::Field::AddrList
   is a Mail::Field

=head1 SYNOPSIS

  use Mail::Field::AddrList;

  $to   = Mail::Field->new('To');
  $from = Mail::Field->new('From', 'poe@daimi.aau.dk (Peter Orbaek)');
  
  $from->create('foo@bar.com' => 'Mr. Foo', poe => 'Peter');
  $from->parse('foo@bar.com (Mr Foo), Peter Orbaek <poe>');

  # make a RFC822 header string
  print $from->stringify(),"\n";

  # extract e-mail addresses and names
  @addresses = $from->addresses(); # strings
  @names     = $from->names();     # strings
  @addr      = $from->addr_list(); # Mail::Address objects (v2.00)

  # adjoin a new address to the list
  $from->set_address('foo@bar.com', 'Mr. Foo');

=head1 DESCRIPTION

Defines parsing and formatting of address field, for the following
fields: C<To>, C<From>, C<Cc>, C<Reply-To>, and C<Sender>.

All the normally used features of the address field specification of
RFC2822 are implemented, but some complex (and therefore hardly ever used)
constructs will not be understood.  Use Mail::Message::Field::Full
in MailBox if you need full RFC compliance.

Extends L<"DESCRIPTION" in Mail::Field|Mail::Field/"DESCRIPTION">.
 
=head1 METHODS

Extends L<"METHODS" in Mail::Field|Mail::Field/"METHODS">.
 
=head2 Constructors

Extends L<"Constructors" in Mail::Field|Mail::Field/"Constructors">.
 
=over 4

=item Mail::Field::AddrList-E<gt>B<combine>($fields)

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::AddrList-E<gt>B<extract>( $tag, $head [, $index ] )

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::AddrList-E<gt>B<new>( $tag [, STRING | %options] )

Inherited, see L<Mail::Field/"Constructors">

=back

=head2 "Fake" constructors

Extends L<""Fake" constructors" in Mail::Field|Mail::Field/""Fake" constructors">.
 
=over 4

=item $obj-E<gt>B<create>(%options)

Inherited, see L<Mail::Field/""Fake" constructors">

=item $obj-E<gt>B<parse>()

Inherited, see L<Mail::Field/""Fake" constructors">

=back

=head2 Accessors

Extends L<"Accessors" in Mail::Field|Mail::Field/"Accessors">.
 
=over 4

=item $obj-E<gt>B<set>(%options)

Inherited, see L<Mail::Field/"Accessors">

=item $obj-E<gt>B<stringify>()

Inherited, see L<Mail::Field/"Accessors">

=item $obj-E<gt>B<tag>()

=item Mail::Field::AddrList-E<gt>B<tag>()

Inherited, see L<Mail::Field/"Accessors">

=back

=head2 Smart accessors

Extends L<"Smart accessors" in Mail::Field|Mail::Field/"Smart accessors">.
 
=over 4

=item $obj-E<gt>B<addr_list>()

Returns the collected L<Mail::Address|Mail::Address> objects.

=item $obj-E<gt>B<addresses>()

Returns a list if email addresses, found in the field content.

=item $obj-E<gt>B<names>()

Returns a list of nicely formatted named, for each of the addresses
found in the content.

=item $obj-E<gt>B<set_address>($email, $name)

Add/replace an $email address to the field.

=item $obj-E<gt>B<text>( [STRING] )

Inherited, see L<Mail::Field/"Smart accessors">

=back

=head1 DETAILS

Extends L<"DETAILS" in Mail::Field|Mail::Field/"DETAILS">.
 
=head1 DIAGNOSTICS

=over 4

=item Error: Undefined subroutine <method> 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<http://perl.overmeer.net/mailtools/>.

=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 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-2017 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>

PK       ! 2&  &    Date.pmnu [        # Copyrights 1995-2019 by [Mark Overmeer <markov@cpan.org>].
#  For other contributors see ChangeLog.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.02.
# This code is part of the bundle MailTools.  Meta-POD processed with
# OODoc into POD and HTML manual-pages.  See README.md for Copyright.
# Licensed under the same terms as Perl itself.

package Mail::Field::Date;
use vars '$VERSION';
$VERSION = '2.21';

use base 'Mail::Field';

use strict;

use Date::Format qw(time2str);
use Date::Parse  qw(str2time);

(bless [])->register('Date');


sub set()
{   my $self = shift;
    my $arg = @_ == 1 ? shift : { @_ };

    foreach my $s (qw(Time TimeStr))
    {   if(exists $arg->{$s})
             { $self->{$s} = $arg->{$s} }
        else { delete $self->{$s} }
    }

    $self;
}

sub parse($)
{   my $self = shift;
    delete $self->{Time};
    $self->{TimeStr} = shift;
    $self;
}


sub time(;$)
{   my $self = shift;

    if(@_)
    {   delete $self->{TimeStr};
        return $self->{Time} = shift;
    }

    $self->{Time} ||= str2time $self->{TimeStr};
}

sub stringify
{   my $self = shift;
    $self->{TimeStr} ||= time2str("%a, %e %b %Y %T %z", $self->time);
}

sub reformat
{   my $self = shift;
    $self->time($self->time);
    $self->stringify;
}

1;
PK       ! 4>bx      Date.podnu [        =encoding utf8

=head1 NAME

Mail::Field::Date - a date header field

=head1 INHERITANCE

 Mail::Field::Date
   is a Mail::Field

=head1 SYNOPSIS

  use HTTP::Date 'time2iso';
  my $field = Mail::Field->new(Date => time2iso());

=head1 DESCRIPTION

Represents one "Date" header field.

Extends L<"DESCRIPTION" in Mail::Field|Mail::Field/"DESCRIPTION">.
 
=head1 METHODS

Extends L<"METHODS" in Mail::Field|Mail::Field/"METHODS">.
 
=head2 Constructors

Extends L<"Constructors" in Mail::Field|Mail::Field/"Constructors">.
 
=over 4

=item Mail::Field::Date-E<gt>B<combine>($fields)

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::Date-E<gt>B<extract>( $tag, $head [, $index ] )

Inherited, see L<Mail::Field/"Constructors">

=item Mail::Field::Date-E<gt>B<new>( $tag [, STRING | %options] )

Inherited, see L<Mail::Field/"Constructors">

=back

=head2 "Fake" constructors

Extends L<""Fake" constructors" in Mail::Field|Mail::Field/""Fake" constructors">.
 
=over 4

=item $obj-E<gt>B<create>(%options)

Inherited, see L<Mail::Field/""Fake" constructors">

=item $obj-E<gt>B<parse>()

Inherited, see L<Mail::Field/""Fake" constructors">

=back

=head2 Accessors

Extends L<"Accessors" in Mail::Field|Mail::Field/"Accessors">.
 
=over 4

=item $obj-E<gt>B<set>(%options)

 -Option --Default
  Time     undef
  TimeStr  undef

=over 2

=item Time => SECONDS

=item TimeStr => STRING

A string acceptable to Date::Parse.

=back

=item $obj-E<gt>B<stringify>()

Inherited, see L<Mail::Field/"Accessors">

=item $obj-E<gt>B<tag>()

=item Mail::Field::Date-E<gt>B<tag>()

Inherited, see L<Mail::Field/"Accessors">

=back

=head2 Smart accessors

Extends L<"Smart accessors" in Mail::Field|Mail::Field/"Smart accessors">.
 
=over 4

=item $obj-E<gt>B<text>( [STRING] )

Inherited, see L<Mail::Field/"Smart accessors">

=item $obj-E<gt>B<time>( [$time] )

Query (or change) the $time (as stored in the field) in seconds.

=back

=head1 DETAILS

Extends L<"DETAILS" in Mail::Field|Mail::Field/"DETAILS">.
 
=head1 DIAGNOSTICS

=over 4

=item Error: Undefined subroutine <method> 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<http://perl.overmeer.net/mailtools/>.

=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 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-2017 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>

PK       ! T
  
  
  Generic.pmnu [        # Copyrights 1995-2019 by [Mark Overmeer <markov@cpan.org>].
#  For other contributors see ChangeLog.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.02.
# This code is part of the bundle MailTools.  Meta-POD processed with
# OODoc into POD and HTML manual-pages.  See README.md for Copyright.
# Licensed under the same terms as Perl itself.

package Mail::Field::Generic;
use vars '$VERSION';
$VERSION = '2.21';

use base 'Mail::Field';

use Carp;


sub create
{   my ($self, %arg) = @_;
    $self->{Text} = delete $arg{Text};

    croak "Unknown options " . join(",", keys %arg)
       if %arg;

    $self;
}


sub parse
{   my $self = shift;
    $self->{Text} = shift || "";
    $self;
}

sub stringify { shift->{Text} }

1;
PK       ! WO  O    AddrList.pmnu [        # Copyrights 1995-2019 by [Mark Overmeer <markov@cpan.org>].
#  For other contributors see ChangeLog.
# See the manual pages for details on the licensing terms.
# Pod stripped from pm file by OODoc 2.02.
# This code is part of the bundle MailTools.  Meta-POD processed with
# OODoc into POD and HTML manual-pages.  See README.md for Copyright.
# Licensed under the same terms as Perl itself.

use strict;

package Mail::Field::AddrList;
use vars '$VERSION';
$VERSION = '2.21';

use base 'Mail::Field';

use Carp;
use Mail::Address;


my $x = bless [];
$x->register('To');
$x->register('From');
$x->register('Cc');
$x->register('Reply-To');
$x->register('Sender');

sub create(@)
{   my ($self, %arg)  = @_;
    $self->{AddrList} = {};

    while(my ($e, $n) = each %arg)
    {   $self->{AddrList}{$e} = Mail::Address->new($n, $e);
    }

    $self;
}

sub parse($)
{   my ($self, $string) = @_;
    foreach my $a (Mail::Address->parse($string))
    {   my $e = $a->address;
	$self->{AddrList}{$e} = $a;
    }
    $self;
}

sub stringify()
{   my $self = shift;
    join(", ", map { $_->format } values %{$self->{AddrList}});
}


sub addresses { keys %{shift->{AddrList}} }


# someone forgot to implement a method to return the Mail::Address
# objects.  Added in 2.00; a pity that the name addresses() is already
# given :(  That one should have been named emails()
sub addr_list { values %{shift->{AddrList}} }


sub names { map { $_->name } values %{shift->{AddrList}} }


sub set_address($$)
{   my ($self, $email, $name) = @_;
    $self->{AddrList}{$email} = Mail::Address->new($name, $email);
    $self;
}

1;
PK         ! Ni8  8                  Generic.podnu [        PK         ! F8  8              s  AddrList.podnu [        PK         ! 2&  &                Date.pmnu [        PK         ! 4>bx                D"  Date.podnu [        PK         ! T
  
  
            ].  Generic.pmnu [        PK         ! WO  O              1  AddrList.pmnu [        PK        +8 