Initial Commit

This commit is contained in:
Riley Schneider
2025-12-03 16:38:10 +01:00
parent c5e26bf594
commit b732d8d4b5
17680 changed files with 5977495 additions and 2 deletions

View File

@@ -0,0 +1,72 @@
# 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;

View File

@@ -0,0 +1,175 @@
=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>

View File

@@ -0,0 +1,66 @@
# 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;

View File

@@ -0,0 +1,152 @@
=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>

View File

@@ -0,0 +1,37 @@
# 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;

View File

@@ -0,0 +1,147 @@
=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>