# Python Poplib Module

The `poplib` module defines a class, `POP3`, which encapsulates a connection to a POP3 server and implements the protocol as defined in RFC 1939. The `POP3` class supports both POP3 and POP3-over-SSL.

## Importing the Module

```python
import poplib
```

## Connecting to a Server

### Standard Connection

```python
import poplib

# Connect to the POP3 server
# Standard port is 110
pop_server = poplib.POP3('pop.example.com')

# Print the welcome message
print(pop_server.getwelcome().decode('utf-8'))
```

### SSL Connection

For secure connections, use `POP3_SSL`.

```python
import poplib

# Connect using SSL (default port 995)
pop_server = poplib.POP3_SSL('pop.gmail.com')
```

## Authentication

```python
pop_server.user('your_username')
pop_server.pass_('your_password')
```

## Retrieving Statistics

You can get the number of messages and the total size of the mailbox.

```python
num_messages, total_size = pop_server.stat()
print(f"Messages: {num_messages}, Total Size: {total_size} bytes")
```

## Retrieving Messages

To retrieve a message, use `retr(message_number)`. Note that message numbers start at 1.

```python
if num_messages > 0:
    # Retrieve the latest message
    # Returns: (response, lines, octets)
    resp, lines, octets = pop_server.retr(num_messages)
    
    # Combine lines into a single string
    message_content = b'\n'.join(lines).decode('utf-8')
    print(message_content)
```

## Quitting

The `quit()` method signs off, commits changes (like deletions), and closes the connection.

```python
pop_server.quit()
```

[[programming/python/python]]