From: Jiri Hruska Date: Sat, 23 Feb 2013 21:05:19 +0000 (+0100) Subject: imap: Added the ability to FETCH a specific UID and SECTION X-Git-Tag: curl-7_30_0~284 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5c5b7c7146b07c15c72ff80f0b2438659a827f29;p=thirdparty%2Fcurl.git imap: Added the ability to FETCH a specific UID and SECTION Updated the FETCH command to send the UID and SECTION parsed from the URL. By default the BODY specifier doesn't include a section, BODY[] is now sent whereas BODY[TEXT] was previously sent. In my opinion retrieving just the message text is rarely useful when dealing with emails, as the headers are required for example, so that functionality is not retained. In can however be simulated by adding SECTION=TEXT to the URL. Also updated test801 and test1321 due to the BODY change. --- diff --git a/lib/imap.c b/lib/imap.c index 4a5c3f806d..33f8b1d2ee 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -1109,11 +1109,12 @@ static CURLcode imap_select(struct connectdata *conn) static CURLcode imap_fetch(struct connectdata *conn) { CURLcode result = CURLE_OK; + struct IMAP *imap = conn->data->state.proto.imap; - /* TODO: make this select the correct mail - * Use "1 body[text]" to get the full mail body of mail 1 - */ - result = imap_sendf(conn, "FETCH 1 BODY[TEXT]"); + /* Send the FETCH command */ + result = imap_sendf(conn, "FETCH %s BODY[%s]", + imap->uid ? imap->uid : "1", + imap->section ? imap->section : ""); if(result) return result; diff --git a/tests/data/test1321 b/tests/data/test1321 index 7589534f7e..c7ae7daa58 100644 --- a/tests/data/test1321 +++ b/tests/data/test1321 @@ -59,7 +59,7 @@ imap://%HOSTIP:%IMAPPORT/1321 -u user:secret -p -x %HOSTIP:%PROXYPORT A001 CAPABILITY A002 LOGIN user secret A003 SELECT 1321 -A004 FETCH 1 BODY[TEXT] +A004 FETCH 1 BODY[] A005 LOGOUT diff --git a/tests/data/test801 b/tests/data/test801 index 67e10997f5..793b2781da 100644 --- a/tests/data/test801 +++ b/tests/data/test801 @@ -41,7 +41,7 @@ imap://%HOSTIP:%IMAPPORT/801 -u user:secret A001 CAPABILITY A002 LOGIN user secret A003 SELECT 801 -A004 FETCH 1 BODY[TEXT] +A004 FETCH 1 BODY[] A005 LOGOUT