我试图使用LibCurl来同步我的IMAP电子邮件,这样,实际上,我有一个电子邮件客户端,它会在收到时定期检索新的电子邮件到文件夹中。它不应该像过滤一样聪明地做任何事情 - 只需收到电子邮件。
我对如何实现这一点有一些想法 - 但问题是我能看到的唯一选项是LibCurl是新的和最近的选项(如果另一个电子邮件客户端出现,可能会)在此期间检索/读取/响应电子邮件。我可以检索自上次收集时间以来到达的电子邮件 - 除了LibCurl不允许检索的粒度比日期更精确。
我到目前为止编写的代码如下(基于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;
}
有没有人知道如何实现我想达到的目标?到目前为止,我一直在尝试使用Gmail(这也提出了如何使用LibCurl而不必降低Gmail的安全设置的问题!)