From 4a6028ef895034f93b6f8aedd898f1e1542e98b1 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Thu, 21 Aug 2014 14:35:12 +0200 Subject: fake service now supports mbox and RFC-2822 mails. --- py-fake-service/app/adapter/contacts.py | 2 +- py-fake-service/app/adapter/mail.py | 2 +- py-fake-service/app/adapter/mail_service.py | 20 ++++++++++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) (limited to 'py-fake-service/app') diff --git a/py-fake-service/app/adapter/contacts.py b/py-fake-service/app/adapter/contacts.py index 5c55b8b1..f997b527 100644 --- a/py-fake-service/app/adapter/contacts.py +++ b/py-fake-service/app/adapter/contacts.py @@ -7,7 +7,7 @@ class Contacts: self.contacts = [] def add(self, mbox_mail): - contact = mbox_mail.get_from() + contact = mbox_mail.from_addr self.contacts.append(Contact(contact)) def search(self, query): diff --git a/py-fake-service/app/adapter/mail.py b/py-fake-service/app/adapter/mail.py index 30a53641..4f8eeb9a 100644 --- a/py-fake-service/app/adapter/mail.py +++ b/py-fake-service/app/adapter/mail.py @@ -56,7 +56,7 @@ class Mail: def _get_headers(self, mbox_mail): headers = {} - headers['from'] = mbox_mail.get_from() + headers['from'] = mbox_mail.from_addr headers['to'] = [mbox_mail.get('To')] headers['subject'] = mbox_mail.get('Subject') headers['date'] = datetime.fromtimestamp( diff --git a/py-fake-service/app/adapter/mail_service.py b/py-fake-service/app/adapter/mail_service.py index 3a4d45cc..66c0d74e 100644 --- a/py-fake-service/app/adapter/mail_service.py +++ b/py-fake-service/app/adapter/mail_service.py @@ -20,17 +20,29 @@ class MailService: self.tagsset = TagsSet() self.contacts = Contacts() + def _read_file(self, filename): + with open(filename, 'r') as fd: + return fd.read() + + def _create_message_from_file(self, filename): + data = self._read_file(filename) + if data.startswith('From '): + msg = mailbox.mbox(filename).popitem()[1] + msg.from_addr = msg.get_from() + else: + msg = mailbox.Message(data) + msg.from_addr = msg.get('From') + return msg + def load_mailset(self): mbox_filenames = [ filename for filename in os.listdir (self.MAILSET_PATH) if filename.startswith('mbox')] - boxes = (mailbox.mbox - (os.path.join(self.MAILSET_PATH, mbox)) + messages = (self._create_message_from_file(os.path.join(self.MAILSET_PATH, mbox)) for mbox in mbox_filenames) - for box in boxes: - message = box.popitem()[1] + for message in messages: self.mailset.add(message) self.tagsset.add(message) self.contacts.add(message) -- cgit v1.2.3