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.
This commit is contained in:
Jiri Hruska 2013-02-23 22:05:19 +01:00 committed by Steve Holme
parent 7f6c7331b2
commit 5c5b7c7146
3 changed files with 7 additions and 6 deletions

View File

@ -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;

View File

@ -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
</protocol>
<proxy>

View File

@ -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
</protocol>
</verify>