如何解决libcurl CURL 会话不刷新新收到的邮件?
我有以下 C++ 代码可以通过 2 个请求获取邮件 UID。第一个阅读今天的所有内容。第二个搜索邮件 UID >= 15165。它在 2 个请求之间休眠 30 秒。在那段时间里,我测试向邮箱发送电子邮件,第二个请求没有接收到新的邮件 UID。如果我调用 curl_easy_init()
并为第二个请求设置用户/密码,它会起作用。
问题:是否有 API“刷新”CURL 会话以便我可以使用相同的 CURL*
?如果没有,除了通过 curl_easy_init()
重新初始化一个全新的连接之外,我还有其他选择吗?
int test( const std::string& user,const std::string& passwd )
{
CURL *curl;
CURLcode res = CURLE_OK;
curl_data data;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl,CURLOPT_USERNAME,user.c_str());
curl_easy_setopt(curl,CURLOPT_PASSWORD,passwd.c_str());
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,curl_data::callback );
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&data);
// Request 1
curl_easy_setopt(curl,CURLOPT_URL,"imaps://imap.gmail.com:993/INBOX");
curl_easy_setopt(curl,CURLOPT_CUSTOMREQUEST,"SEARCH SINCE 8-JUN-2021");
const auto res1 = curl_easy_perform(curl);
if( res1 != CURLE_OK )
{
std::cerr << "res1 error" << std::endl;
return -1;
}
std::cout << "res1: data = " << data.data() << std::endl;
// Request 2
sleep(30);
data.clear();
curl_easy_setopt(curl,"SEARCH 15165:*");
const auto res2 = curl_easy_perform(curl);
if( res2 != CURLE_OK )
{
std::cerr << "res2 error" << std::endl;
return -1;
}
std::cout << "res2: data = " << data.data() << std::endl;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。