1use strict; 2use warnings; 3package Email::Folder::POP3; 4{ 5 $Email::Folder::POP3::VERSION = '1.015'; 6} 7# ABSTRACT: Email::Folder Access to POP3 Folders 8 9our $POP3 ||= 'Net::POP3'; 10 11use parent qw[Email::Folder::Reader]; 12use Net::POP3; 13use URI; 14 15sub _uri { 16 my $self = shift; 17 return $self->{_uri} ||= URI->new($self->{_file}); 18} 19 20sub _server { 21 my $self = shift; 22 return $self->{_server} if $self->{_server}; 23 24 my $uri = $self->_uri; 25 my $host = $uri->host; 26 my $port = $uri->port || 110; 27 my $server = $POP3->new($host, Port => $port, Timeout => 60) 28 or die("Net::POP3->new('$host', Port => $port, Timeout => 60): $!"); 29 30 my ($user, $pass) = @{$self}{qw[username password]}; 31 ($user, $pass) = split ':', $uri->userinfo, 2 unless $user; 32 33 $server->login($user, $pass) if $user; 34 35 $self->{_next} = 1; 36 return $self->{_server} = $server; 37} 38 39sub next_message { 40 my $self = shift; 41 my $message = $self->_server->get($self->{_next}); 42 if ( $message ) { 43 ++$self->{_next}; 44 return join '', @{$message}; 45 } 46 $self->{_next} = 1; 47 return; 48} 49 501; 51 52__END__ 53 54=pod 55 56=encoding UTF-8 57 58=head1 NAME 59 60Email::Folder::POP3 - Email::Folder Access to POP3 Folders 61 62=head1 VERSION 63 64version 1.015 65 66=head1 SYNOPSIS 67 68 use Email::Folder; 69 use Email::FolderType::Net; 70 71 my $folder = Email::Folder->new('pop://user:pass@example.com:110'); 72 73 print $_->header('Subject') for $folder->messages; 74 75=head1 DESCRIPTION 76 77This software adds POP3 functionality to L<Email::Folder|Email::Folder>. 78Its interface is identical to the other 79L<Email::Folder::Reader|Email::Folder::Reader> subclasses. 80 81=head2 Parameters 82 83C<username> and C<password> parameters may be sent to C<new()>. If 84used, they override any user info passed in the connection URI. 85 86=head1 SEE ALSO 87 88L<Email::Folder>, 89L<Email::Folder::Reader>, 90L<Email::FolderType::Net>, 91L<URI::pop>, 92L<Net::POP3>. 93 94=head1 AUTHOR 95 96GomoR <netpkt@gomor.org> 97 98=head1 COPYRIGHT AND LICENSE 99 100This software is copyright (c) 2004 by GomoR <netpkt@gomor.org>. 101 102This is free software; you can redistribute it and/or modify it under 103the same terms as the Perl 5 programming language system itself. 104 105=cut 106