From cb441d22ef664cafca3a7357e2b898c0c0542d29 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 24 Feb 2009 12:14:03 +0000 Subject: [PATCH] IMAP: Fix FETCH answers to match Outlook expectations git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@395 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/imap/ImapConnection.java | 28 ++++++++++++++--------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 2c1a8f7f..2a93cb88 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -445,22 +445,28 @@ public class ImapConnection extends AbstractConnection { } catch (ParseException e) { throw new IOException("Invalid date: " + message.date); } - } else if ("BODY[]".equals(param) || "BODY.PEEK[]".equals(param)) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - message.write(baos); - baos.close(); - DavGatewayTray.debug("Message size: " + message.size + " actual size:" + baos.size() + " message+headers: " + (message.size + baos.size())); - buffer.append(" RFC822.SIZE ").append(baos.size()).append(" ").append(param).append("<0> {").append(baos.size()).append("}"); - sendClient(buffer.toString()); - os.write(baos.toByteArray()); - os.flush(); - buffer.setLength(0); } else if ("BODY.PEEK[HEADER]".equals(param) || param.startsWith("BODY.PEEK[HEADER")) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); HeaderOutputStream headerOutputStream = new HeaderOutputStream(baos); message.write(headerOutputStream); baos.close(); - buffer.append(" RFC822.SIZE ").append(baos.size()).append(" BODY[HEADER.FIELDS ()] {").append(baos.size()).append("}"); + buffer.append(" RFC822.SIZE ").append(headerOutputStream.size); + if ("BODY.PEEK[HEADER]".equals(param)) { + buffer.append(" BODY[HEADER] {"); + } else { + buffer.append(" BODY[HEADER.FIELDS ()] {"); + } + buffer.append(baos.size()).append("}"); + sendClient(buffer.toString()); + os.write(baos.toByteArray()); + os.flush(); + buffer.setLength(0); + } else if ("BODY[]".equals(param) || "BODY.PEEK[]".equals(param)) { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + message.write(baos); + baos.close(); + DavGatewayTray.debug("Message size: " + message.size + " actual size:" + baos.size() + " message+headers: " + (message.size + baos.size())); + buffer.append(" RFC822.SIZE ").append(baos.size()).append(" ").append("BODY[]").append(" {").append(baos.size()).append("}"); sendClient(buffer.toString()); os.write(baos.toByteArray()); os.flush();