Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A pure-perl implementation of a POP3 client.

Example Usage

# raw interface
my $pop =""), :port(110), :debug, :raw);
$pop.get-response # +OK

$pop.apop-login("username", "password");
# or (less secure)

my $message-list = $pop.list; # +OK 2 messages\r\n1 120\r\n...
say $pop.retr(1); # +OK \r\nFrom:...

# simple interface
my $pop =""), :port(110), :debug);
$pop.auth("username", "password"); # tries apop, then falls back to user/pass
my $count = $pop.message-count;
my @messages = $pop.get-messages;
for @messages {
    my $unique-id = .uid;
    my $raw-data = .data;
    my $email-mime = .mime; # returns Email::MIME object
                            # (requires Email::MIME installed to work)

Simple mode methods

Note that all of these methods should return a true value (or a valid false response, such as '0' from message-count) on success or a Failure object on failure.

  • new(:$server!, :$port, :$debug, :$socket, :$ssl, :$starttls, :$plain)

    Creates a new POP3 client and opens a connection to the server.

    $port defaults to 110.

    $debug will print the network traffic to $*ERR if set.

    $socket allows you to use a class other than IO::Socket::INET for network communication. If you pass in a defined object, Net::POP3 will assume it is an already connected socket.

  • auth($username, $password)

    Authenticates with the server. Attempts APOP first, and if the server doesn't support APOP or if the APOP login fails, will attempt a USER + PASS plain text login.

  • message-count()

    Returns the number of messages in your mailbox.

  • get-message(:$sid, :$uid)

    Returns a Net::POP3::Message object that refers to the message with the specified session id ($sid, the standard POP3 message number) or unique id ($uid, as returned from UIDL. NYI)

  • get-messages()

    Returns a list of Net::POP3::Message objects, one for each message in the current mailstore.

  • quit()

    Commits any message deletions and closes the connection to the server.

Net::POP3::Message Methods

This class contains the actual message from the POP3 server.

  • size()

    Returns the size of the message, in octets.

  • uid()

    Returns the unique id of the message (as returned by UIDL)

  • delete()

    Deletes this message from the POP3 server. Will not take effect until .quit is called on the main object.

  • data()

    Returns the raw email message as a string.

  • mime()

    Returns the email message as an Email::MIME object. Note that this will fail if Email::MIME is not installed.


No description, website, or topics provided.







No releases published


No packages published

Contributors 4



  • Other 100.0%