1
0
mirror of https://github.com/moparisthebest/davmail synced 2024-08-13 16:53:51 -04:00

IMAP: fix keyword handling to avoid sending \Seen as keyword

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2037 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2012-09-25 21:00:56 +00:00
parent 43969b1012
commit 547787cbce

View File

@ -1393,24 +1393,36 @@ public class ImapConnection extends AbstractConnection {
StringTokenizer flagtokenizer = new StringTokenizer(flags); StringTokenizer flagtokenizer = new StringTokenizer(flags);
while (flagtokenizer.hasMoreTokens()) { while (flagtokenizer.hasMoreTokens()) {
String flag = flagtokenizer.nextToken(); String flag = flagtokenizer.nextToken();
if ("\\Seen".equalsIgnoreCase(flag) && message.read) { if ("\\Seen".equalsIgnoreCase(flag)) {
properties.put("read", "0"); if (message.read) {
message.read = false; properties.put("read", "0");
} else if ("\\Flagged".equalsIgnoreCase(flag) && message.flagged) { message.read = false;
properties.put("flagged", "0"); }
message.flagged = false; } else if ("\\Flagged".equalsIgnoreCase(flag)) {
} else if ("\\Deleted".equalsIgnoreCase(flag) && message.deleted) { if (message.flagged) {
properties.put("deleted", null); properties.put("flagged", "0");
message.deleted = false; message.flagged = false;
} else if ("Junk".equalsIgnoreCase(flag) && message.junk) { }
properties.put("junk", "0"); } else if ("\\Deleted".equalsIgnoreCase(flag)) {
message.junk = false; if (message.deleted) {
} else if ("$Forwarded".equalsIgnoreCase(flag) && message.forwarded) { properties.put("deleted", null);
properties.put("forwarded", null); message.deleted = false;
message.forwarded = false; }
} else if ("\\Answered".equalsIgnoreCase(flag) && message.answered) { } else if ("Junk".equalsIgnoreCase(flag)) {
properties.put("answered", null); if (message.junk) {
message.answered = false; properties.put("junk", "0");
message.junk = false;
}
} else if ("$Forwarded".equalsIgnoreCase(flag)) {
if (message.forwarded) {
properties.put("forwarded", null);
message.forwarded = false;
}
} else if ("\\Answered".equalsIgnoreCase(flag)) {
if (message.answered) {
properties.put("answered", null);
message.answered = false;
}
} else if (message.keywords != null) { } else if (message.keywords != null) {
properties.put("keywords", message.removeFlag(flag)); properties.put("keywords", message.removeFlag(flag));
} }
@ -1419,24 +1431,36 @@ public class ImapConnection extends AbstractConnection {
StringTokenizer flagtokenizer = new StringTokenizer(flags); StringTokenizer flagtokenizer = new StringTokenizer(flags);
while (flagtokenizer.hasMoreTokens()) { while (flagtokenizer.hasMoreTokens()) {
String flag = flagtokenizer.nextToken(); String flag = flagtokenizer.nextToken();
if ("\\Seen".equalsIgnoreCase(flag) && !message.read) { if ("\\Seen".equalsIgnoreCase(flag)) {
properties.put("read", "1"); if (!message.read) {
message.read = true; properties.put("read", "1");
} else if ("\\Deleted".equalsIgnoreCase(flag) && !message.deleted) { message.read = true;
message.deleted = true; }
properties.put("deleted", "1"); } else if ("\\Deleted".equalsIgnoreCase(flag)) {
} else if ("\\Flagged".equalsIgnoreCase(flag) && !message.flagged) { if (!message.deleted) {
properties.put("flagged", "2"); message.deleted = true;
message.flagged = true; properties.put("deleted", "1");
} else if ("\\Answered".equalsIgnoreCase(flag) && !message.answered) { }
properties.put("answered", "102"); } else if ("\\Flagged".equalsIgnoreCase(flag)) {
message.answered = true; if (!message.flagged) {
} else if ("$Forwarded".equalsIgnoreCase(flag) && !message.forwarded) { properties.put("flagged", "2");
properties.put("forwarded", "104"); message.flagged = true;
message.forwarded = true; }
} else if ("Junk".equalsIgnoreCase(flag) && !message.junk) { } else if ("\\Answered".equalsIgnoreCase(flag)) {
properties.put("junk", "1"); if (!message.answered) {
message.junk = true; properties.put("answered", "102");
message.answered = true;
}
} else if ("$Forwarded".equalsIgnoreCase(flag)) {
if (!message.forwarded) {
properties.put("forwarded", "104");
message.forwarded = true;
}
} else if ("Junk".equalsIgnoreCase(flag)) {
if (!message.junk) {
properties.put("junk", "1");
message.junk = true;
}
} else { } else {
properties.put("keywords", message.addFlag(flag)); properties.put("keywords", message.addFlag(flag));
} }