diff --git a/src/java/davmail/exchange/dav/Field.java b/src/java/davmail/exchange/dav/Field.java index fabfe598..029432a7 100644 --- a/src/java/davmail/exchange/dav/Field.java +++ b/src/java/davmail/exchange/dav/Field.java @@ -537,7 +537,7 @@ public class Field { } else if (field.isMultivalued) { // multivalued field, split values separated by \n List valueList = new ArrayList(); - String[] values = value.split("\n"); + String[] values = value.split(","); for (final String singleValue : values) { valueList.add(new XmlSerializable() { public Element toXml(Document document) { diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 049d18cd..726aeb23 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -1271,6 +1271,8 @@ public class ImapConnection extends AbstractConnection { session.contains("from", value), session.contains("to", value), session.contains("cc", value)); + } else if ("KEYWORD".equals(token)) { + return session.contains("keywords", tokens.nextToken()); } else if ("FROM".equals(token)) { return session.contains("from", tokens.nextToken()); } else if ("TO".equals(token)) { @@ -1412,7 +1414,7 @@ public class ImapConnection extends AbstractConnection { String[] keywords = message.keywords.split(","); HashSet keywordSet = new HashSet(); for (String value : keywords) { - if (!value.equals(flag)) { + if (!value.equalsIgnoreCase(flag)) { keywordSet.add(value); } } @@ -1444,13 +1446,19 @@ public class ImapConnection extends AbstractConnection { message.junk = true; } else { HashSet keywordSet = new HashSet(); + boolean hasFlag = false; if (message.keywords != null) { String[] keywords = message.keywords.split(","); for (String value : keywords) { keywordSet.add(value); + if (value.equalsIgnoreCase(flag)) { + hasFlag = true; + } } } - keywordSet.add(flag); + if (!hasFlag) { + keywordSet.add(flag); + } message.keywords = StringUtil.join(keywordSet, ","); properties.put("keywords", message.keywords); }