C++ 使用LibCurl同步IMAP电子邮件
我正在尝试使用LibCurl同步我的IMAP电子邮件,这样,实际上,我有一个电子邮件客户端,它会在新电子邮件到达时定期将其检索到文件夹中。它不应该做任何像过滤这样聪明的事情——只需要收到电子邮件 我对如何实现这一点有一些想法,但问题是,我能看到的LibCurl的唯一选项是NEW和recented,如果另一个电子邮件客户端同时出现并检索/读取/响应电子邮件,这些选项(大概)将不起作用。我可以检索自上次收集时间以来收到的电子邮件——除了LibCurl不允许检索的粒度比Day更精确 到目前为止,我编写的代码如下(基于LibCurl文档中的示例):C++ 使用LibCurl同步IMAP电子邮件,c++,imap,libcurl,C++,Imap,Libcurl,我正在尝试使用LibCurl同步我的IMAP电子邮件,这样,实际上,我有一个电子邮件客户端,它会在新电子邮件到达时定期将其检索到文件夹中。它不应该做任何像过滤这样聪明的事情——只需要收到电子邮件 我对如何实现这一点有一些想法,但问题是,我能看到的LibCurl的唯一选项是NEW和recented,如果另一个电子邮件客户端同时出现并检索/读取/响应电子邮件,这些选项(大概)将不起作用。我可以检索自上次收集时间以来收到的电子邮件——除了LibCurl不允许检索的粒度比Day更精确 到目前为止,我编写
有人知道我怎样才能达到我想达到的目标吗?到目前为止,我一直在试用Gmail(这也提出了一个问题,即如何在不降低Gmail安全设置的情况下使用LibCurl!)你知道fetchmail吗?这就是它所做的。我是-但它并不真正适合我的用例。我想要的是一个单一的应用程序,它可以获取我的电子邮件,然后进一步处理它。我意识到我可以用fetchmail和一堆脚本达到同样的效果——但是,就像老鼠窝里的电线一样,这让我觉得很凌乱。我宁愿(如果可能的话)使用LibCurl并拥有一个很好的集成解决方案。
#include "curl_imap.h"
using namespace std;
std::string homedirectory;
int curl_changedir(string path, CURL* curl) {
string newpath;
curl_easy_setopt(curl, CURLOPT_URL, path.c_str());
return 0;
}
CURL* curl_login(char* username, char* password) {
CURLcode res = CURLE_OK;
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_USERNAME, username);
curl_easy_setopt(curl, CURLOPT_PASSWORD, password);
curl_changedir(homedirectory, curl);
} else {
return NULL;
}
return curl;
}
int fetch_imap_inbox(IMAPSetting &imap) {
homedirectory.assign(imap.url,strlen(imap.url));
CURLcode res = CURLE_OK;
CURL *curl = curl_easy_init();
curl = curl_login(imap.username, imap.password);
if (curl) {
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
}
return (int)res;
}