如何使用libcurl和C从IMAP服务器上读取消息:

时间:2014-01-22 22:23:22

标签: ubuntu gcc curl imap libcurl

我正在尝试使用libcurl从IMAP服务器检索消息。以下是我在在线示例中使用的代码:

#include <stdio.h>
#include <curl/curl.h>

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

   curl = curl_easy_init();
   if(curl) { 
     curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
     curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
     curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX/;UID=1");
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
     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;

}

不幸的是,这不起作用。我得到以下输出:

C SELECT INBOX/;UID=1 < C NO Mailbox doesn't exist: INBOX.;UID=1 * Select failed

如果不是curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX/;UID=1");我只放curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX);那么我实际上得到关于INBOX的有用输出,就像我应该的那样,没有错误。

我正在使用uccntu上的gcc进行编译。

2 个答案:

答案 0 :(得分:0)

请勿将斜杠添加到您的网址,即使用imaps://imap.example.com/INBOX;UID=1

答案 1 :(得分:0)

仅适用于所有人在此之后阅读此内容的人

如果我使用Google Mail帐户,代码就会运行。像这样:

 curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.gmail.com:993/INBOX/;UID=1");

(使用gcc在ubuntu中编译)