package Email::Folder::POP3; # $Id: POP3.pm,v 1.1 2004/12/29 01:36:40 cwest Exp $ use strict; use vars qw[$VERSION $POP3]; $VERSION = sprintf "%d.%02d", split m/\./, (qw$Revision: 1.1 $)[1]; $POP3 ||= 'Net::POP3'; use base qw[Email::Folder::Reader]; use Net::POP3; use URI; sub _uri { my $self = shift; return $self->{_uri} ||= URI->new($self->{_file}); } sub _server { my $self = shift; return $self->{_server} if $self->{_server}; my $uri = $self->_uri; my $host = $uri->host; my $port = $uri->port || 110; my $server = $POP3->new($host, Port => $port, Timeout => 60) or die("Net::POP3->new('$host', Port => $port, Timeout => 60): $!"); my ($user, $pass) = @{$self}{qw[username password]}; ($user, $pass) = split ':', $uri->userinfo, 2 unless $user; $server->login($user, $pass) if $user; $self->{_next} = 1; return $self->{_server} = $server; } sub next_message { my $self = shift; my $message = $self->_server->get($self->{_next}); if ( $message ) { ++$self->{_next}; return join '', @{$message}; } $self->{_next} = 1; return; } 1; __END__ =head1 NAME Email::Folder::POP3 - Email::Folder Access to POP3 Folders =head1 SYNOPSIS use Email::Folder; use Email::FolderType::Net; my $folder = Email::Folder->new('pop://user:pass@example.com:110/'); print $_->header('Subject') for $folder->messages; =head1 DESCRIPTION This software adds POP3 functionality to L. Its interface is identical to the other L subclasses. =head2 Parameters C and C parameters may be sent to C. If used, they override any user info passed in the connection URI. =head1 SEE ALSO L, L, L, L, L. =head1 AUTHOR GomoR, >. Casey West, > (Maintainer). =head1 COPYRIGHT Copyright (c) 2004 GomoR. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut