9 releases (5 stable)

1.1.1 Oct 28, 2023
1.1.0 Oct 24, 2023
1.0.1 Sep 10, 2023
0.1.7 Jul 25, 2023
0.1.6 Apr 19, 2023

#193 in Email

Download history 605/week @ 2025-08-17 297/week @ 2025-08-24 60/week @ 2025-08-31 98/week @ 2025-09-07 135/week @ 2025-09-14 50/week @ 2025-09-21 37/week @ 2025-09-28 32/week @ 2025-10-05 29/week @ 2025-10-12 60/week @ 2025-10-19 85/week @ 2025-10-26 44/week @ 2025-11-02 56/week @ 2025-11-09 52/week @ 2025-11-16 66/week @ 2025-11-23 47/week @ 2025-11-30

225 downloads per month
Used in 2 crates

MIT license

85KB
2K SLoC

Pop3 client

This is a simple Pop3 client that implements all of the features according to RFC 1939, written in Rust.

It is used in Dust-Mail to connect to Pop servers.

Usage

You can create a new session using the connect function or the connect_plain function.

connect expects a tls connector from the async-native-tls crate. In the future more tls options will be supported.

If you already have a connected socket, you can also create a new session using the new function.

Example

extern crate async_pop;
extern crate async_native_tls;
extern crate mailparse;

use async_native_tls::TlsConnector;
use mailparse::parse_mail;

#[tokio::main]
async fn main() {
    let tls = TlsConnector::new();

    let mut client = async_pop::connect(("pop.gmail.com", 995), "pop.gmail.com", &tls).await.unwrap();

    client.login("example@gmail.com", "password").await.unwrap();

    let bytes = client.retr(1).await.unwrap();

    let message = parse_mail(&bytes).unwrap();

    let subject = message.headers.get_first_value("Subject").unwrap();

    println!("{}", subject);

}

Dependencies

~4–21MB
~255K SLoC