#
# Cclient.pm
# Last Edited: Sat Oct 9 18:14:12 WEST 2004
#
# Copyright (c) 1998 - 2004 Malcolm Beattie
#
# You may distribute under the terms of either the GNU General Public
# License or the Artistic License, as specified in the README file.
#
package Mail::Cclient;
use DynaLoader;
use Exporter;
use strict;
use vars qw($VERSION @ISA @EXPORT_OK %_callback);
$VERSION = "1.12";
@ISA = qw(Exporter DynaLoader);
@EXPORT_OK = qw(set_callback get_callback rfc822_base64 rfc822_binary
rfc822_qprint rfc822_8bit utf8_mime2text rfc822_date
rfc822_parse_adrlist rfc822_write_address rfc822_output);
{
package Mail::Cclient::Address;
use vars qw(%FIELDS);
%FIELDS = (
personal => 1,
adl => 2,
mailbox => 3,
host => 4,
error => 5);
sub personal { shift->[1] }
sub adl { shift->[2] }
sub mailbox { shift->[3] }
sub host { shift->[4] }
sub error { shift->[5] }
}
{
package Mail::Cclient::Body;
use vars qw(%FIELDS);
%FIELDS = (
type => 1,
encoding => 2,
subtype => 3,
parameter => 4,
id => 5,
description => 6,
nested => 7,
language => 8,
location => 9,
lines => 10,
bytes => 11,
md5 => 12,
disposition => 13);
sub type { shift->[1] }
sub encoding { shift->[2] }
sub subtype { shift->[3] }
sub parameter { shift->[4] }
sub id { shift->[5] }
sub description { shift->[6] }
sub nested { shift->[7] }
sub language { shift->[8] }
sub location { shift->[9] }
sub lines { shift->[10] }
sub bytes { shift->[11] }
sub md5 { shift->[12] }
sub disposition { shift->[13] }
}
{
package Mail::Cclient::Envelope;
use vars qw(%FIELDS);
%FIELDS = (
remail => 1,
return_path => 2,
date => 3,
from => 4,
sender => 5,
reply_to => 6,
subject => 7,
to => 8,
cc => 9,
bcc => 10,
in_reply_to => 11,
message_id => 12,
newsgroups => 13,
followup_to => 14,
references => 15);
sub remail { shift->[1] }
sub return_path { shift->[2] }
sub date { shift->[3] }
sub from { shift->[4] }
sub sender { shift->[5] }
sub reply_to { shift->[6] }
sub subject { shift->[7] }
sub to { shift->[8] }
sub cc { shift->[9] }
sub bcc { shift->[10] }
sub in_reply_to { shift->[11] }
sub message_id { shift->[12] }
sub newsgroups { shift->[13] }
sub followup_to { shift->[14] }
sub references { shift->[15] }
}
{
package Mail::Cclient::Elt;
use vars qw(%FIELDS);
%FIELDS = (
msgno => 1,
date => 2,
flags => 3,
rfc822_size => 4,
imapdate => 5);
sub msgno { shift->[1] }
sub date { shift->[2] }
sub flags { shift->[3] }
sub rfc822_size { shift->[4] }
sub imapdate { shift->[5] }
}
# Our own methods
sub new {
my $class = shift;
return Mail::Cclient::open(undef, @_);
}
sub set_callback {
while (@_) {
my $name = shift;
my $value = shift;
$_callback{$name} = $value;
}
}
sub get_callback {
my $name = shift;
return $_callback{$name};
}
sub gc {
my $obj = shift;
$obj = undef unless ref($obj);
$obj->real_gc;
}
sub parameters {
my $stream = shift; # XXX Ignore stream for now
if (@_ == 1) {
return _parameters(undef, @_);
} elsif (@_ % 2) {
require Carp;
Carp::croak("Mail::Cclient::parameters takes one argument or pairs");
}
while (my ($param, $value) = splice(@_, 0, 2)) {
_parameters(undef, $param, $value);
}
return 1;
}
sub Mail::Cclient::SMTP::new {
my $class = shift;
return Mail::Cclient::SMTP::open_full("Mail::Cclient::SMTP", @_);
}
bootstrap Mail::Cclient;
1;
syntax highlighted by Code2HTML, v. 0.9.1