Email::Folder::POP3 - Email::Folder Access to POP3 Folders


Email-Folder-POP3 documentation Contained in the Email-Folder-POP3 distribution.

Index


Code Index:

NAME

Top

Email::Folder::POP3 - Email::Folder Access to POP3 Folders

SYNOPSIS

Top

  use Email::Folder;
  use Email::FolderType::Net;

  my $folder = Email::Folder->new('pop://user:pass@example.com:110');

  print $_->header('Subject') for $folder->messages;

DESCRIPTION

Top

This software adds POP3 functionality to Email::Folder. Its interface is identical to the other Email::Folder::Reader subclasses.

Parameters

username and password parameters may be sent to new(). If used, they override any user info passed in the connection URI.

SEE ALSO

Top

Email::Folder, Email::Folder::Reader, Email::FolderType::Net, URI::pop, Net::POP3.

PERL EMAIL PROJECT

Top

This module is maintained by the Perl Email Project.

  http://emailproject.perl.org/wiki/Email::Folder::POP3

AUTHOR

Top

Ricardo SIGNES, <rjbs@cpan.org> (current maintainer).

Casey West, <casey@geeknest.com> (previous maintainer)

GomoR, <netpkt@gomor.org> (original author)

COPYRIGHT

Top


Email-Folder-POP3 documentation Contained in the Email-Folder-POP3 distribution.

package Email::Folder::POP3;
use strict;

use vars qw[$VERSION $POP3];
$VERSION   = '1.013';
$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__