Skip to content

PrivateRookie/mailme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mailme

Async POP3 client impl with Rust.

supported methods

some pop3 server may not some methods list below

  • user
  • pass
  • stat
  • list (split into list_one and list)
  • retr
  • dele
  • noop
  • rset
  • quit
  • top
  • uidl (split into uidl_one and uidl)
  • capa
  • apop

example

add tokio and mailme to dep

tokio = { version = "0.3.1", features = ["io-util", "io-std", "net", "rt", "rt-multi-thread"] }
mailme = "0.1.1"

then just connect, login and do something

use pop3::POP3Client;
use tokio::runtime::Runtime;

fn main() {
    let rt = Runtime::new().unwrap();
    rt.block_on(async {
        // if not tls connection, use new_basic instead
        // mailme use Mozilla's root certificates
        // you can add pem file path to use your self signed cert
        // let mut client = POP3Client::new_tls("pop.qq.com", 995, Some(<pem_file_path>)).await.unwrap();
        let mut client = POP3Client::new_tls("pop.qq.com", 995, None).await.unwrap();
        // remember to read welcome message
        println!("{:?}", client.read_welcome().await);
        // login
        println!("{:?}", client.user("PrivateRookie").await);
        println!("{:?}", client.pass("踏遍青山人未老").await);

        // do some thing
        println!("{:?}", client.stat().await);
    })
}

Todos

  • impl POP3 protocol(:heavy_check_mark:)
  • pop3 retr return parsed email
  • support custom ssl context(not test with real server)
  • calling quit when pop3 client drop ?
  • impl imap protocol
  • add monitor methods

Refs

About

Async POP3 client impl with Rust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages