On May 17, 2009, at 11:18 AM, Charles Marcus wrote:
My question is:
Using the IMAP protocol, is there a way, *without* downloading the entire message (specifically, binary attachments), that an IMAP client can do the following:
Yes. There are even several different ways to do it. Everything starts
by doing FETCH BODYSTRUCTURE command, which gives the client knowledge
of what MIME parts the message contains and also all the MIME headers.
After that it can fetch only those parts it's interested in.
- Download *only* the message headers and the text/html/body contents of the body of the message but *not* any binary attachments,
BODYSTRUCTURE shows Content-Type of each MIME part. After that client
can do e.g. FETCH (BODY[1]) to fetch only the first MIME part.
Detect that a message *has* one or more binary attachments,
*without* downloading them,Grab the names of all of the attachments,
BODYSTRUCTURE should have all that information. If there's something
missing, it's still possible to do FETCH BODY[n.MIME] to get MIME part
headers.
- Display for the user the email/email headers and text/html body
parts,
I'm not sure what you mean by this.
- Display the existence of the attachments in whatever manner the client normally shows them (in TBird, they show at the bottom of the message just above the status bar),
Yeah. The only issue I can think of here is if TB wants to detect the
attachment type by e.g. feeding the file to "file" command or
something. But even then it would be possible to download for example
first and last 1 kB of the attachment and hopefully file would
recognize the type based on only those.
- Download the actual attachment on demand - ie, if/when it is dbl-click > opened, right-click > saved, or the message is forwarded?
Yes.
Pointers to appropriate IMAP protocol docs would be happily passed
on to them the Mozilla dev guys.
It's all in RFC 3501 in FETCH command docs.
BTW. There are many clients that do this on-demand downloading. I use
Apple Mail and Evolution and they both do it.