From 43356e24ffa21f42173ba33526d40e0710497830 Mon Sep 17 00:00:00 2001 From: mguessan Date: Sun, 5 Aug 2012 12:34:12 +0000 Subject: [PATCH] IMAP: improve Exchange 2010 header search, use direct header names to implement substring search on some headers git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1987 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- .../davmail/exchange/ews/EwsExchangeSession.java | 9 ++++++--- src/java/davmail/exchange/ews/Field.java | 13 +++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/java/davmail/exchange/ews/EwsExchangeSession.java b/src/java/davmail/exchange/ews/EwsExchangeSession.java index 86d0a2e5..c1f28374 100644 --- a/src/java/davmail/exchange/ews/EwsExchangeSession.java +++ b/src/java/davmail/exchange/ews/EwsExchangeSession.java @@ -863,12 +863,15 @@ public class EwsExchangeSession extends ExchangeSession { @Override public Condition headerIsEqualTo(String headerName, String value) { if (serverVersion.startsWith("Exchange2010")) { - if ("message-id".equals(headerName)) { + if ("message-id".equals(headerName) + || "from".equals(headerName) + || "to".equals(headerName) + || "cc".equals(headerName) + || "bcc".equals(headerName)) { return new AttributeCondition(headerName, Operator.Contains, value, ContainmentMode.Substring, ContainmentComparison.IgnoreCase); } else { // Exchange 2010 does not support header search, use PR_TRANSPORT_MESSAGE_HEADERS instead - return new AttributeCondition("messageheaders", Operator.Contains, headerName+": "+value, ContainmentMode.Substring, ContainmentComparison.IgnoreCase); - + return new AttributeCondition("messageheaders", Operator.Contains, headerName + ": " + value, ContainmentMode.Substring, ContainmentComparison.IgnoreCase); } } else { return new HeaderCondition(headerName, value); diff --git a/src/java/davmail/exchange/ews/Field.java b/src/java/davmail/exchange/ews/Field.java index 8e2e08fb..f7b0c0ec 100644 --- a/src/java/davmail/exchange/ews/Field.java +++ b/src/java/davmail/exchange/ews/Field.java @@ -73,16 +73,16 @@ public final class Field { FIELD_MAP.put("iconIndex", new ExtendedFieldURI(0x1080, ExtendedFieldURI.PropertyType.Integer));// PR_ICON_INDEX FIELD_MAP.put("datereceived", new ExtendedFieldURI(0x0e06, ExtendedFieldURI.PropertyType.SystemTime));// PR_MESSAGE_DELIVERY_TIME - FIELD_MAP.put("bcc", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "bcc")); - FIELD_MAP.put("to", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "to")); - FIELD_MAP.put("cc", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "cc")); - FIELD_MAP.put("from", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "from")); + FIELD_MAP.put("to", new UnindexedFieldURI("message:ToRecipients")); + FIELD_MAP.put("cc", new UnindexedFieldURI("message:CcRecipients")); + FIELD_MAP.put("from", new UnindexedFieldURI("message:From")); + FIELD_MAP.put("bcc", new UnindexedFieldURI("message:BccRecipients")); FIELD_MAP.put("messageheaders", new ExtendedFieldURI(0x007D, ExtendedFieldURI.PropertyType.String)); // PR_TRANSPORT_MESSAGE_HEADERS FIELD_MAP.put("contentclass", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "content-class")); - FIELD_MAP.put("message-id", new ExtendedFieldURI(ExtendedFieldURI.DistinguishedPropertySetType.InternetHeaders, "message-id")); + FIELD_MAP.put("message-id", new UnindexedFieldURI("message:InternetMessageId")); FIELD_MAP.put("body", new UnindexedFieldURI("item:Body")); @@ -233,9 +233,6 @@ public final class Field { // attachments FIELD_MAP.put("attachments", new UnindexedFieldURI("item:Attachments")); - // headers - FIELD_MAP.put("message-id", new UnindexedFieldURI("message:InternetMessageId")); - FIELD_MAP.put("messageheaders", new ExtendedFieldURI(0x007D, ExtendedFieldURI.PropertyType.String)); } /**