forked from mirror/django-mailbox
Initial commit.
This commit is contained in:
commit
413b60e35f
13 changed files with 340 additions and 0 deletions
50
django_mailbox/transports.py
Normal file
50
django_mailbox/transports.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import email
|
||||
from imaplib import IMAP4
|
||||
from poplib import POP3
|
||||
|
||||
class PopMailEnumerator(object):
|
||||
def __init__(self, hostname, port):
|
||||
self.hostname = hostname
|
||||
self.port = port
|
||||
|
||||
def connect(self, username, password):
|
||||
self.server = POP3(self.hostname, self.port)
|
||||
self.server.user(username)
|
||||
self.server.pass_(password)
|
||||
|
||||
def get_message(self):
|
||||
message_count = len(self.server.list()[1])
|
||||
for i in range(message_count):
|
||||
try:
|
||||
msg_contents = "\r\n".join(self.server.retr(i + 1)[1])
|
||||
message = email.message_from_string(msg_contents)
|
||||
yield message
|
||||
except email.Errors.MessageParseError:
|
||||
continue
|
||||
self.server.dele(i + 1)
|
||||
self.server.quit()
|
||||
return
|
||||
|
||||
class ImapMailEnumerator(object):
|
||||
def __init__(self, hostname, port):
|
||||
self.hostname = hostname
|
||||
self.port = port
|
||||
|
||||
def connect(self, username, password):
|
||||
self.server = IMAP4(self.hostname, self.port)
|
||||
typ, msg = self.server.login(username, password)
|
||||
self.server.select()
|
||||
|
||||
def get_message(self):
|
||||
typ, inbox = self.server.search(None, 'ALL')
|
||||
for key in inbox[0].split():
|
||||
try:
|
||||
typ, msg_contents = self.server.fetch(key, '(RFC822)')
|
||||
message = email.message_from_string(msg_contents[0][1])
|
||||
yield message
|
||||
except email.Errors.MessageParseError:
|
||||
continue
|
||||
self.server.store(key, "+FLAGS", "\\Deleted");
|
||||
self.server.expunge()
|
||||
return
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue