You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用async-imap的Search命令获取邮件时的数量异常问题

使用async-imap查询邮件时仅返回部分邮件的问题

我尝试用async-imap库执行以下代码从服务器查询邮件:

let messages_set = imap_session.search("ALL").await?;

但该代码仅返回了最后34封邮件(UID为1至34),而我的邮箱实际有200多封邮件。我希望每次查询能获取30封邮件,或者单次最多获取10000000封邮件。

我做了以下测试,结果如下:

查询语句返回邮件情况
ALL最后34封
LARGER 100034封
UID 10:*34封
SEEN34封
SINCE 06-May-20266封
UID LARGER 100封
SUBJECT "xxxx"0封
FROM "xxx@163.com"0封

完整测试代码如下:

let imap_addr = (imap_server, 993);
let tcp_stream = TcpStream::connect(imap_addr).await?;
let tls = async_native_tls::TlsConnector::new();
let tls_stream = tls.connect(imap_server, tcp_stream).await?;

let client = async_imap::Client::new(tls_stream);
println!("-- connected to {}:{}", imap_addr.0, imap_addr.1);

// 未认证的客户端无法进行邮件操作,需要先登录
let mut imap_session = client.login(login, password).await.map_err(|e| e.0)?;

println!("-- logged in a {}", login);

// 选择INBOX邮箱
imap_session.select("INBOX").await?;
println!("-- INBOX selected");


let query = "SINCE 06-May-2026".to_owned();

let messages_set = imap_session.search(query).await?;
let messages: Vec<u32> = messages_set.into_iter().collect();


println!("emails count: {}", messages.len());


// 退出登录,保持服务器友好
imap_session.logout().await?;

内容的提问来源于stack exchange,提问作者long

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 23:04:53