Re: Fetching emails via imap without setting the "\Seen" flag (i.e. using BODY.PEEK)
Date: Thu, 14 Mar 2019 23:33:37 +0100
> On Wed, 13 Mar 2019, Christian Schmitz via curl-library wrote:
> we use
> "UID FETCH 1:* (FLAGS INTERNALDATE RFC822.SIZE BODY.PEEK[HEADER.FIELDS
> (Message-Id DATE FROM SUBJECT TO SENDER REPLY-TO CC BCC)])"
> As custom command for CURL.
> Than we grab result from debug log.
thanks for your suggestion.
However, instead of developing a script to get the needed info from the
debug log, I have modified curl (imap.c file) in order to fetch a message
for one of the following custom commands:
1) FETCH <id> (BODY.PEEK[<section>]<<partial>>)
2) FETCH <id> (BODY[<section>]<<partial>>)
3) UID FETCH <uid> (BODY.PEEK[<section>]<<partial>>)
4) UID FETCH <uid> (BODY[<section>]<<partial>>)
where <section>, <<partial>> and () are optional
Since I didn't have so much time to investigate and understand all the
software structure, I focused on imap.c and implemented a simple trick.
In the imap_state_select_resp function, after a custom command is
successfully sent, I parse the command to check if it meets one of the 4
If so, I change the state to IMAP_FETCH.
I run all the tests, they work with the exception of test841, because the
test custom command -X 'FETCH 123 BODY' now has a different behavior.
I have attached the patch file, it's just consists of a new function to
parse the custom command and very few lines of code in the the
Please let me know if the modification can be useful to anybody or instead a
similar functionality should be implemented differently according to the
curl design principles.
In the latter case, I will use it just for my ongoing application, in the
hope that one day curl will properly support BODY.PEEK via custom command.
Thanks and BR,
Luca Di Rocco
- application/octet-stream attachment: 0001-Added-fetch-of-a-message-via-custom-command-X-opt.patch