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
1 changed files with 60 additions and 36 deletions

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)) {
if (message.read) {
properties.put("read", "0"); properties.put("read", "0");
message.read = false; message.read = false;
} else if ("\\Flagged".equalsIgnoreCase(flag) && message.flagged) { }
} else if ("\\Flagged".equalsIgnoreCase(flag)) {
if (message.flagged) {
properties.put("flagged", "0"); properties.put("flagged", "0");
message.flagged = false; message.flagged = false;
} else if ("\\Deleted".equalsIgnoreCase(flag) && message.deleted) { }
} else if ("\\Deleted".equalsIgnoreCase(flag)) {
if (message.deleted) {
properties.put("deleted", null); properties.put("deleted", null);
message.deleted = false; message.deleted = false;
} else if ("Junk".equalsIgnoreCase(flag) && message.junk) { }
} else if ("Junk".equalsIgnoreCase(flag)) {
if (message.junk) {
properties.put("junk", "0"); properties.put("junk", "0");
message.junk = false; message.junk = false;
} else if ("$Forwarded".equalsIgnoreCase(flag) && message.forwarded) { }
} else if ("$Forwarded".equalsIgnoreCase(flag)) {
if (message.forwarded) {
properties.put("forwarded", null); properties.put("forwarded", null);
message.forwarded = false; message.forwarded = false;
} else if ("\\Answered".equalsIgnoreCase(flag) && message.answered) { }
} else if ("\\Answered".equalsIgnoreCase(flag)) {
if (message.answered) {
properties.put("answered", null); properties.put("answered", null);
message.answered = false; 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)) {
if (!message.read) {
properties.put("read", "1"); properties.put("read", "1");
message.read = true; message.read = true;
} else if ("\\Deleted".equalsIgnoreCase(flag) && !message.deleted) { }
} else if ("\\Deleted".equalsIgnoreCase(flag)) {
if (!message.deleted) {
message.deleted = true; message.deleted = true;
properties.put("deleted", "1"); properties.put("deleted", "1");
} else if ("\\Flagged".equalsIgnoreCase(flag) && !message.flagged) { }
} else if ("\\Flagged".equalsIgnoreCase(flag)) {
if (!message.flagged) {
properties.put("flagged", "2"); properties.put("flagged", "2");
message.flagged = true; message.flagged = true;
} else if ("\\Answered".equalsIgnoreCase(flag) && !message.answered) { }
} else if ("\\Answered".equalsIgnoreCase(flag)) {
if (!message.answered) {
properties.put("answered", "102"); properties.put("answered", "102");
message.answered = true; message.answered = true;
} else if ("$Forwarded".equalsIgnoreCase(flag) && !message.forwarded) { }
} else if ("$Forwarded".equalsIgnoreCase(flag)) {
if (!message.forwarded) {
properties.put("forwarded", "104"); properties.put("forwarded", "104");
message.forwarded = true; message.forwarded = true;
} else if ("Junk".equalsIgnoreCase(flag) && !message.junk) { }
} else if ("Junk".equalsIgnoreCase(flag)) {
if (!message.junk) {
properties.put("junk", "1"); properties.put("junk", "1");
message.junk = true; message.junk = true;
}
} else { } else {
properties.put("keywords", message.addFlag(flag)); properties.put("keywords", message.addFlag(flag));
} }