C++ libcurl IMAP不工作

C++ libcurl IMAP不工作,c++,c,email,imap,libcurl,C++,C,Email,Imap,Libcurl,使用下面的代码,我试图让任何libcurl IMAP命令正常工作 目前,无论通过CURLOPT_CUSTOMREQUEST设置了什么命令,在我的回调函数中,唯一给出的数据是收件箱中最旧的电子邮件(第一封)。我甚至可以在CURLOPT_CUSTOMREQUEST中添加类似“dfsafdasfaf”的内容,不会显示任何错误,并且会从回调中打印最旧的电子邮件 我曾尝试使用libcurl网站上的示例代码列出文件夹、LSUB等,结果都是一样的——只返回了收件箱中第一封电子邮件的内容 我正在win32 g+

使用下面的代码,我试图让任何libcurl IMAP命令正常工作

目前,无论通过CURLOPT_CUSTOMREQUEST设置了什么命令,在我的回调函数中,唯一给出的数据是收件箱中最旧的电子邮件(第一封)。我甚至可以在CURLOPT_CUSTOMREQUEST中添加类似“dfsafdasfaf”的内容,不会显示任何错误,并且会从回调中打印最旧的电子邮件

我曾尝试使用libcurl网站上的示例代码列出文件夹、LSUB等,结果都是一样的——只返回了收件箱中第一封电子邮件的内容

我正在win32 g++(-lcurldll)上使用curl 7.40 mingw32

我肯定是做错了什么。如果你能花点时间纠正我的错误,我将不胜感激。多谢各位

编辑-即使您不知道答案,如果您以前成功地让libcurl IMAP工作过,是否可以留下评论?因为如果之前没有人让libcurl imap工作,我将停止浪费时间,转而使用VMime或其他选项

我的主要问题是如何通过libcurl列出文件夹

size_t writeCallback(char* buf, size_t size, size_t nmemb, void* up)
{   
    printf("%s\n", buf);

    return size*nmemb; //tell curl how many bytes we handled
} 


int main(void)
{
    CURL *curl;
    CURLcode res = CURLE_OK;

    curl = curl_easy_init();
    if(curl) {

        curl_easy_setopt(curl, CURLOPT_USERNAME, "gmailuser");
        curl_easy_setopt(curl, CURLOPT_PASSWORD, "password");


        curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.gmail.com/INBOX");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);

        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &writeCallback);
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

        curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "LIST");

        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);
   }

  _getch (); 
  return (int)res;

}

要获取给定GMail收件箱中的文件夹列表,您应该使用:

curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.gmail.com/");
此外,我相信:

我已经在Linux上,在libcurl版本7.35.0上对它进行了测试,不过我相信您遇到的问题不是特定于操作系统的,而是由库中IMAP支持的当前实现状态引起的。您可以找到libcurl版本7.35.0的源代码


您还可以在上找到当前libcurl IMAP支持的更多示例(有关更多详细示例,请参阅右侧的链接)。

您到底想做什么?感谢您的输入-我想首先列出gmail帐户的所有文件夹。您只需使用
curl\u easy\u setopt即可列出所有文件夹(curl,CURLOPT_URL,“imaps://imap.gmail.com/)此外,我相信您不需要
curl\u easy\u setopt(curl,CURLOPT\u CUSTOMREQUEST,“LIST”)
但我知道您希望以某种方式格式化输出。再次感谢您的后续评论。我已经尝试了您所说的,就像我所说的-在我的回调函数中打印第一个参数(buf)-它不包含任何关于收件箱文件夹的内容,只包含收件箱中第一封邮件的内容。你能告诉我我应该如何准确地阅读收件箱文件夹吗?文本会被放入什么缓冲区?我感谢你的时间。REACHUS-你个人在这方面取得了成功吗?我看到在curl邮件列表上有很多人是w/IMAP的问题是,虽然它在命令行上似乎可以正常工作。你能告诉我你用的是哪个版本的cURL吗?谢谢,我很感激-但是你知道我可以从哪里下载开发包吗?文件名应该是cURL-7.35.0-devel-mingw。我会试试这些:或者尝试交叉编译它(我在libcurl邮件列表上看到了一些关于如何做到这一点的邮件)软件包包含库、.dll,并包含文件。鉴于libcurl的当前状态,我认为手动编译听起来像是一场浪费时间的赌博,我不愿意冒险,因此我将使用他们的命令行工具,直到我启动VMime并开始工作,但再次感谢您的帮助。
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "LIST");