def test_parse_mail_without_body(self): message = """Date: Wed, 28 Dec 2011 14:02:00 +0100 From: Alice Ally <*****@*****.**> To: Bob Bobby <*****@*****.**> Subject: Bob sends a mesage Message-ID: [email protected] X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2 Hi! Hope you can read my message kind reagards, Bob """ timestamp, output, notes, properties = \ MailParser.parse_message(message) self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>") self.assertEqual(output, "[[mailto:[email protected]]" + \ "[Alice Ally]]: Bob sends a mesage") self.assertEqual(notes, "") self.assertEqual(properties.get_value('TO'), 'Bob Bobby <*****@*****.**>') for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'X-SCANNED-BY'): with self.assertRaises(KeyError): properties.get_value(key)
def test_parse_mail_without_body(self): message = """Date: Wed, 28 Dec 2011 14:02:00 +0100 From: Alice Ally <*****@*****.**> To: Bob Bobby <*****@*****.**> Subject: Bob sends a mesage Message-ID: [email protected] X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2 Hi! Hope you can read my message kind reagards, Bob """ timestamp, output, notes, properties = \ MailParser.parse_message(message) self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>") self.assertEqual(output, "[[mailto:[email protected]]" + \ "[Alice Ally]]: Bob sends a mesage") self.assertEqual(notes, "") p = """ :PROPERTIES: :TO: Bob Bobby <*****@*****.**> :ID: 8fd560c32d51c455744df7abd26ea545924ba632 :END:""" self.assertEqual(unicode(properties), p)
def test_parse_ng_with_body(self): message = """Path: news.tugraz.at!not-for-mail From: Alice Ally <*****@*****.**> Newsgroups: tu-graz.betriebssysteme.linux Subject: I love Memacs Date: Thu, 17 Nov 2011 22:02:06 +0100 Message-ID: <*****@*****.**> Reply-To: [email protected] Content-Type: text/plain; charset=utf-8 i just want to say that i love Memacs """ timestamp, output, notes, properties = \ MailParser.parse_message(message, True) self.assertEqual(timestamp, "<2011-11-17 Thu 22:02>") self.assertEqual(output, "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \ "graz.betriebssysteme.linux]" + \ "[tu-graz.betriebssysteme.linux]]: I love Memacs") self.assertEqual(notes, "i just want to say that i love Memacs\n") self.assertEqual(properties.get_value('NEWSGROUPS'), 'tu-graz.betriebssysteme.linux') self.assertEqual(properties.get_value('REPLY-TO'), '*****@*****.**') for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'CONTENT-TYPE'): with self.assertRaises(KeyError): properties.get_value(key)
def test_parse_ng_with_body(self): message = """Path: news.tugraz.at!not-for-mail From: Alice Ally <*****@*****.**> Newsgroups: tu-graz.betriebssysteme.linux Subject: I love Memacs Date: Thu, 17 Nov 2011 22:02:06 +0100 Message-ID: <*****@*****.**> Reply-To: [email protected] Content-Type: text/plain; charset=utf-8 i just want to say that i love Memacs """ timestamp, output, notes, properties = \ MailParser.parse_message(message, True) self.assertEqual(timestamp, "<2011-11-17 Thu 22:02:06>") self.assertEqual(output, "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \ "graz.betriebssysteme.linux]" + \ "[tu-graz.betriebssysteme.linux]]: I love Memacs") self.assertEqual(notes, "i just want to say that i love Memacs\n") p = """ :PROPERTIES:\n :REPLY-TO: [email protected] :NEWSGROUPS: tu-graz.betriebssysteme.linux :ID: 53e60f934645301478db6c9d5d3df71a043f9851 :END:""" self.assertEqual(unicode(properties), p)
def test_parse_mail_without_body(self): message = """Date: Wed, 28 Dec 2011 14:02:00 +0100 From: Alice Ally <*****@*****.**> To: Bob Bobby <*****@*****.**> Subject: Bob sends a mesage Message-ID: [email protected] X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2 Hi! Hope you can read my message kind reagards, Bob """ timestamp, output, notes, properties = \ MailParser.parse_message(message) self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>") self.assertEqual(output, "[[mailto:[email protected]]" + \ "[Alice Ally]]: Bob sends a mesage") self.assertEqual(notes, "") self.assertEqual( properties.get_value('TO'), 'Bob Bobby <*****@*****.**>' ) for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'X-SCANNED-BY'): with self.assertRaises(KeyError): properties.get_value(key)
def test_parse_ng_with_body(self): message = """Path: news.tugraz.at!not-for-mail From: Alice Ally <*****@*****.**> Newsgroups: tu-graz.betriebssysteme.linux Subject: I love Memacs Date: Thu, 17 Nov 2011 22:02:06 +0100 Message-ID: <*****@*****.**> Reply-To: [email protected] Content-Type: text/plain; charset=utf-8 i just want to say that i love Memacs """ timestamp, output, notes, properties = \ MailParser.parse_message(message, True) self.assertEqual(timestamp, "<2011-11-17 Thu 22:02>") self.assertEqual(output, "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \ "graz.betriebssysteme.linux]" + \ "[tu-graz.betriebssysteme.linux]]: I love Memacs") self.assertEqual(notes, "i just want to say that i love Memacs\n") self.assertEqual( properties.get_value('NEWSGROUPS'), 'tu-graz.betriebssysteme.linux' ) self.assertEqual( properties.get_value('REPLY-TO'), '*****@*****.**' ) for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'CONTENT-TYPE'): with self.assertRaises(KeyError): properties.get_value(key)
def __fetch_mails_and_write(self, server, message_ids, folder_name): """ Fetches All headers, let Mailparser parse each mail, write to outputfile @param server: imaplib IMAP4_SLL object @param message_ids: list of ids to fetch @param folder_name: folder name of connection """ num = ",".join(message_ids) logging.debug(num) typ, data = server.uid("fetch", num, "(BODY.PEEK[HEADER.FIELDS " + \ "(Date Subject " + \ "From To Cc Reply-To Message-ID)])") if typ == "OK": i = 0 # we have to go in step 2 because every second string is a ")" for i in range(0, len(data), 2): message = data[i][1] timestamp, output, note, properties = \ MailParser.parse_message(message) # just for debbuging in orgfile # properties.add("NUM",data[i][0][:5]) self._writer.write_org_subitem(timestamp, output, note, properties) else: logging.error("Could not fetch mails typ - %s", typ) server.logout(1) sys.exit(1)