On 5/26/2015 9:31 AM, Adam wrote:
What is the proper way to send multiple IMAP commands? For example,
first I'd like to get a listing of all the folder names, then I want
to list the unread files in the folder names.
I've tried using the same CURL* curl handle, sometimes it crashes on
curl_easy_cleanup() (single threaded app), and sometimes it crashes on
the second call to curl_easy_perform(). It depends on the IMAP server,
gmail causes a crash, hotmail doesn't. I've even tried opening/closing
a new handle for each operation and this causes crashes also.
What is the proper way to do this? There are no code samples for this
on the libcurl homepage. Thanks.
The proper way is multiple requests and don't call curl_easy_cleanup
until after you're done with the handle. You want to reuse the handle
until then. Please note as mentioned in the curl_easy_cleanup doc that
"Any use of the handle after this function has been called and have
returned, is illegal." [1]
So you have custom request(s) to get the unread ids then you get the
subjects. Getting the subjects from what I remember is tricky, they only
show up in the header section and not the body unless behavior was
improved in the last year or two. As I think I mentioned to you off-list
somewhere libcurl has minimal support for IMAP command parsing. You'll
have to do a lot of the parsing yourself. The actual command to get the
subject for an id is:
"FETCH " + id + " BODY.PEEK[HEADER.FIELDS (SUBJECT)]"
You may want to check out LibEtPan [2] or take a closer look at Vmime
which you've mentioned.
[1]: http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html
[2]: https://github.com/dinhviethoa/libetpan
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html