From 8c7fc43a4badee5155609d20fa90d54db87c719e Mon Sep 17 00:00:00 2001 From: David Rousselie Date: Wed, 26 Jul 2006 21:47:55 +0200 Subject: [PATCH] reset POP3 flags call RSET POP3 command to reset "seen" flag if supported by the POP3 server darcs-hash:20060726194755-86b55-3e17c219f71aa5ca4db65f6ad8131c0222dd85b0.gz --- src/jmc/email/mailconnection.py | 8 +++++++ tests/test_mailconnection.py | 41 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/jmc/email/mailconnection.py b/src/jmc/email/mailconnection.py index b9bdeb6..4f68847 100644 --- a/src/jmc/email/mailconnection.py +++ b/src/jmc/email/mailconnection.py @@ -452,6 +452,10 @@ class POP3Connection(MailConnection): def get_mail(self, index): POP3Connection._logger.debug("Getting mail " + str(index)) ret, data, size = self.connection.retr(index) + try: + self.connection.rset() + except: + pass if ret[0:3] == '+OK': return self.format_message(email.message_from_string('\n'.join(data))) return u"Error while fetching mail " + str(index) @@ -459,6 +463,10 @@ class POP3Connection(MailConnection): def get_mail_summary(self, index): POP3Connection._logger.debug("Getting mail summary " + str(index)) ret, data, size = self.connection.retr(index) + try: + self.connection.rset() + except: + pass if ret[0:3] == '+OK': return self.format_message_summary(email.message_from_string('\n'.join(data))) return u"Error while fetching mail " + str(index) diff --git a/tests/test_mailconnection.py b/tests/test_mailconnection.py index 8ca04cd..599d997 100644 --- a/tests/test_mailconnection.py +++ b/tests/test_mailconnection.py @@ -164,8 +164,10 @@ class POP3Connection_TestCase(unittest.TestCase): make_test(["+OK 10 octets\r\n" + \ "From: user@test.com\r\n" + \ "Subject: subject test\r\n\r\n" + \ - "mymessage\r\n.\r\n"], \ - ["RETR 1\r\n"], \ + "mymessage\r\n.\r\n", + "+OK\r\n"], \ + ["RETR 1\r\n", + "RSET\r\n"], \ lambda self: \ self.assertEquals(self.pop3connection.get_mail_summary(1), \ (u"From : user@test.com\n" + \ @@ -176,8 +178,39 @@ class POP3Connection_TestCase(unittest.TestCase): make_test(["+OK 10 octets\r\n" + \ "From: user@test.com\r\n" + \ "Subject: subject test\r\n\r\n" + \ - "mymessage\r\n.\r\n"], \ - ["RETR 1\r\n"], \ + "mymessage\r\n.\r\n", + "+OK\r\n"], \ + ["RETR 1\r\n", + "RSET\r\n"], \ + lambda self: \ + self.assertEquals(self.pop3connection.get_mail(1), \ + (u"From : user@test.com\n" + \ + u"Subject : subject test\n\n" + \ + u"mymessage\n", \ + u"user@test.com"))) + + test_unsupported_reset_command_get_mail_summary = \ + make_test(["+OK 10 octets\r\n" + \ + "From: user@test.com\r\n" + \ + "Subject: subject test\r\n\r\n" + \ + "mymessage\r\n.\r\n", + "-ERR unknown command\r\n"], \ + ["RETR 1\r\n", + "RSET\r\n"], \ + lambda self: \ + self.assertEquals(self.pop3connection.get_mail_summary(1), \ + (u"From : user@test.com\n" + \ + u"Subject : subject test\n\n", \ + u"user@test.com"))) + + test_unsupported_reset_command_get_mail = \ + make_test(["+OK 10 octets\r\n" + \ + "From: user@test.com\r\n" + \ + "Subject: subject test\r\n\r\n" + \ + "mymessage\r\n.\r\n", + "-ERR unknown command\r\n"], \ + ["RETR 1\r\n", + "RSET\r\n"], \ lambda self: \ self.assertEquals(self.pop3connection.get_mail(1), \ (u"From : user@test.com\n" + \