Check mail new logic
- use RECENT flag for search on IMAP server with write access so RECENT flag is deleted on new messages and fetch read only so SEEN flag is not set on fetched messages. - It might work on Exchange 2003 that do not support STORE flag UNSEEN - This change the get_mail loop so now each MailConnection type implement get_next_mail_index because logic is different from IMAP to POP3 connection. darcs-hash:20060207213333-86b55-9c2ccf31fb9ae9e6dd454c907f3188bc6080b817.gz
This commit is contained in:
@@ -56,29 +56,34 @@ class DummyServer:
|
||||
self.real_queries = []
|
||||
|
||||
def serve(self):
|
||||
conn, addr = self.socket.accept()
|
||||
rfile = conn.makefile('rb', -1)
|
||||
if self.responses:
|
||||
data = None
|
||||
for idx in range(len(self.responses)):
|
||||
# if response is a function apply it (it must return a string)
|
||||
# it is given previous received data
|
||||
if isinstance(self.responses[idx], types.FunctionType):
|
||||
response = self.responses[idx](data)
|
||||
else:
|
||||
response = self.responses[idx]
|
||||
if response is not None:
|
||||
# print >>sys.stderr, 'Sending : ', response
|
||||
conn.send(response)
|
||||
data = rfile.readline()
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
self.real_queries.append(data)
|
||||
# print >>sys.stderr, 'Receive : ', data
|
||||
conn.close()
|
||||
self.socket.close()
|
||||
self.socket = None
|
||||
try:
|
||||
conn, addr = self.socket.accept()
|
||||
rfile = conn.makefile('rb', -1)
|
||||
if self.responses:
|
||||
data = None
|
||||
for idx in range(len(self.responses)):
|
||||
# if response is a function apply it (it must return a string)
|
||||
# it is given previous received data
|
||||
if isinstance(self.responses[idx], types.FunctionType):
|
||||
response = self.responses[idx](data)
|
||||
else:
|
||||
response = self.responses[idx]
|
||||
if response is not None:
|
||||
#print >>sys.stderr, 'Sending : ', response
|
||||
conn.send(response)
|
||||
data = rfile.readline()
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
self.real_queries.append(data)
|
||||
#print >>sys.stderr, 'Receive : ', data
|
||||
conn.close()
|
||||
self.socket.close()
|
||||
self.socket = None
|
||||
except:
|
||||
type, value, stack = sys.exc_info()
|
||||
print >>sys.stderr, "".join(traceback.format_exception
|
||||
(type, value, stack, 5))
|
||||
|
||||
def verify_queries(self):
|
||||
result = True
|
||||
@@ -95,7 +100,8 @@ class DummyServer:
|
||||
else:
|
||||
result = False
|
||||
print >>sys.stderr, "Expected " + str(queries_len) + \
|
||||
" queries, got " + str(len(self.real_queries))
|
||||
" queries, got " + str(len(self.real_queries)) + \
|
||||
"\t" + str(self.real_queries)
|
||||
return result
|
||||
|
||||
class XMLDummyServer(DummyServer):
|
||||
|
||||
@@ -236,7 +236,7 @@ class IMAPConnection_TestCase(unittest.TestCase):
|
||||
lambda data: "* SEARCH 9 10 \n" + \
|
||||
data.split()[0] + " OK SEARCH completed\n"], \
|
||||
["^[^ ]* SELECT INBOX", \
|
||||
"^[^ ]* SEARCH UNSEEN"], \
|
||||
"^[^ ]* SEARCH RECENT"], \
|
||||
lambda self: \
|
||||
self.assertEquals(self.imap_connection.get_mail_list(), ['9', '10']))
|
||||
|
||||
@@ -247,12 +247,9 @@ class IMAPConnection_TestCase(unittest.TestCase):
|
||||
" OK [READ-WRITE] SELECT completed\r\n", \
|
||||
lambda data: "* 1 FETCH ((RFC822) {12}\r\nbody" + \
|
||||
" text\r\n)\r\n" + \
|
||||
data.split()[0] + " OK FETCH completed\r\n", \
|
||||
lambda data: "* 1 FETCH (FLAGS (\UNSEEN))\r\n" + \
|
||||
data.split()[0] + " OK STORE completed\r\n"], \
|
||||
["^[^ ]* SELECT INBOX", \
|
||||
"^[^ ]* FETCH 1 \(RFC822\)", \
|
||||
"^[^ ]* STORE 1 FLAGS \(UNSEEN\)"], \
|
||||
data.split()[0] + " OK FETCH completed\r\n"], \
|
||||
["^[^ ]* EXAMINE INBOX", \
|
||||
"^[^ ]* FETCH 1 \(RFC822\)"], \
|
||||
lambda self: self.assertEquals(self.imap_connection.get_mail_summary(1), \
|
||||
(u"From : None\nSubject : None\n\n", \
|
||||
u"None")))
|
||||
@@ -264,12 +261,9 @@ class IMAPConnection_TestCase(unittest.TestCase):
|
||||
" OK [READ-WRITE] SELECT completed\r\n", \
|
||||
lambda data: "* 1 FETCH ((RFC822) {11}\r\nbody" + \
|
||||
" text\r\n)\r\n" + \
|
||||
data.split()[0] + " OK FETCH completed\r\n", \
|
||||
lambda data: "* 1 FETCH (FLAGS (\UNSEEN))\r\n" + \
|
||||
data.split()[0] + " OK STORE completed\r\n"], \
|
||||
["^[^ ]* SELECT INBOX", \
|
||||
"^[^ ]* FETCH 1 \(RFC822\)", \
|
||||
"^[^ ]* STORE 1 FLAGS \(UNSEEN\)"], \
|
||||
data.split()[0] + " OK FETCH completed\r\n"], \
|
||||
["^[^ ]* EXAMINE INBOX", \
|
||||
"^[^ ]* FETCH 1 \(RFC822\)",], \
|
||||
lambda self: self.assertEquals(self.imap_connection.get_mail(1), \
|
||||
(u"From : None\nSubject : None\n\nbody text\r\n\n", \
|
||||
u"None")))
|
||||
|
||||
Reference in New Issue
Block a user