Skip to content

poplib Module

The poplib module provides POP3 client functionality for retrieving emails from POP3 servers.

Complexity Reference

Operation Time Space Notes
Connect O(1) + network latency O(1) Network handshake dominates; may include TLS setup
List messages O(m) + network latency O(m) m = message count; server sends one line per message
Retrieve O(s) + network latency O(s) s = message size in bytes/lines

Retrieving Mail via POP3

Basic POP3 Operations

import poplib

# Connect - O(1) + network latency
# Use POP3 for plaintext (usually port 110) or POP3_SSL for implicit TLS (usually port 995).
pop = poplib.POP3_SSL('pop.example.com', 995)
pop.user('user@gmail.com')
pop.pass_('password')

# Get message count - O(1)
num_messages = len(pop.list()[1])

# List messages - O(n)
response, messages, octets = pop.list()
for msg_info in messages:
    print(msg_info)

# Retrieve message - O(s)
response, lines, octets = pop.retr(1)
message_text = b'\r\n'.join(lines).decode()
print(message_text)

# Delete message - O(1)
pop.dele(1)

# Commit changes - O(1)
pop.quit()