Mail-Box-POP3
view release on metacpan or search on metacpan
lib/Mail/Box/POP3.pm view on Meta::CPAN
sub foundIn(@)
{ my $self = shift;
unshift @_, 'folder' if @_ % 2;
my %args = @_;
(exists $args{type} && lc $args{type} eq 'pop3')
|| (exists $args{folder} && $args{folder} =~ m/^pop/);
}
sub addMessage($)
{ my ($self, $message) = @_;
error __x"you cannot write a message to a pop server (yet)"
if defined $message;
undef;
}
sub addMessages(@)
{ my $self = shift;
# error message described in addMessage()
error __x"you cannot write messages to a pop server (yet)"
if @_;
();
}
sub type() {'pop3'}
sub close(@)
{ my $self = shift;
$self->SUPER::close(@_);
my $pop = delete $self->{MBP_client};
$pop->disconnect if defined $pop;
$self;
}
sub delete(@)
{ my $self = shift;
warning __x"POP3 folders cannot be deleted.";
undef;
}
sub listSubFolders(@) { () } # no
sub openSubFolder($@) { undef } # fails
sub topFolderWithMessages() { 1 } # Yes: only top folder
sub update() { $_[0]->notImplemented }
#--------------------
sub popClient(%)
{ my ($self, %args) = @_;
return $self->{MBP_client}
if defined $self->{MBP_client};
my $auth = $self->{auth};
require Mail::Transport::POP3;
my $client = Mail::Transport::POP3->new(
username => $self->{MBN_username},
password => $self->{MBN_password},
hostname => $self->{MBN_hostname},
port => $self->{MBN_port},
authenticate => $self->{MBP_auth},
use_ssl => $args{use_ssl} || $self->{MBP_use_ssl},
ssl_options => $args{ssl_options} || $self->{MBP_ssl_opts}
)
or error __x"cannot create POP3 client for {name}.", name => $self->name;
$self->{MBP_client} = $client;
}
sub readMessages(@)
{ my ($self, %args) = @_;
my $pop = $self->popClient or return;
my $seqnr = 0;
foreach my $id ($pop->ids)
{ my $message = $args{message_type}->new(
head => $args{head_delayed_type}->new,
unique => $id,
folder => $self,
seqnr => $seqnr++
);
my $body = $args{body_delayed_type}->new(message => $message);
$message->storeBody($body);
$self->storeMessage($message);
}
$self;
}
sub getHead($)
{ my ($self, $message) = @_;
my $pop = $self->popClient or return;
my $uidl = $message->unique;
my $lines = $pop->header($uidl);
unless(defined $lines)
{ $lines = [];
warning __x"message {id} disappeared from POP3 server {name}.", id => $uidl, name => $self->name;
}
( run in 2.852 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )