2 个版本
0.2.1 | 2023 年 2 月 21 日 |
---|---|
0.2.0 | 2023 年 2 月 21 日 |
#4 在 #pop3-client
16KB
245 代码行
rust-pop3-client
使用 rutls 的 rust POP3 客户端。
特性
- 提供所有必需的 POP3 命令
- 提供大多数可选的 POP3 命令
(APOP 未提供,因为它不常用) - 允许指定自己的证书
(如果未提供,则将使用系统证书,可以提供一个rustls::RootCertStore
实例)
依赖
Cargo.toml
[dependencies]
rust-pop3-client = "0.2.1"
示例
use std::error::Error;
use std::io::{self, Write};
extern crate rust_pop3_client;
use rust_pop3_client::Pop3Connection;
fn read_value(prompt: &str) -> Result<String, Box<dyn Error>> {
print!("{}: ", prompt);
io::stdout().flush()?;
let mut value = String::new();
io::stdin().read_line(&mut value)?;
Ok(String::from(value.trim()))
}
fn read_password(prompt: &str) -> Result<String, Box<dyn Error>> {
print!("{}: ", prompt);
io::stdout().flush()?;
Ok(rpassword::read_password()?)
}
fn main() -> Result<(), Box<dyn Error>> {
let host = read_value("host (e.g. pop.gmail.com)")?;
let port = read_value("port (e.g. 995)")?.parse::<u16>()?;
let user = read_value("user (e-mail address)")?;
let password = read_password("password")?;
let mut connection = Pop3Connection::new(&host, port)?;
connection.login(&user, &password)?;
println!("id\tsize");
let infos = connection.list()?;
for info in infos {
println!("{}\t{}", info.message_id, info.message_size);
}
Ok(())
}
类似项目
- rust-pop3
(看起来很有前途,但基于过时的 OpenSSL 版本。)
参考
依赖
~7–17MB
~303K SLoC